【问题标题】:How to prevent service stop when onTaskRemoved is calles?调用 onTaskRemoved 时如何防止服务停止?
【发布时间】:2013-05-10 13:42:01
【问题描述】:

在 ICS 中的最近应用程序列表中执行“滑动退出”后,音乐 Service 被停止,我遇到了问题。服务以START_REDELIVER_INTENT 启动,几秒钟后会自动重新启动,但我想完全阻止停止。

“滑动退出”行为通常是未知的,我的全部知识都基于此thread。 它包含来自一位 Google 员工的 cmets:

[W]当你刷掉最近的任务时会发生什么:(1)杀死应用程序的任何后台或空进程(参见http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html#Lifecycle了解这意味着什么),以及(2)使用新的@ 987654323@ API 告诉应用程序的任何服务有关被删除的任务,以便它可以做任何它认为合适的事情。

实际上,删除最近任务中的条目将杀死该进程存在的所有后台进程。它不会直接导致服务停止,但是有一个 API 可以让他们找出任务已被删除,以决定他们是否希望这意味着他们应该停止。这样一来,删除电子邮件应用程序的最近任务不会导致它停止检查电子邮件。 如果你真的想完全停止一个应用程序,你可以长按最近的任务去应用程序信息,然后在那里点击强制停止。停止是完全终止应用程序 - 所有进程都被终止,所有服务停止,所有通知被移除,所有警报被移除,等等。除非明确请求,否则不允许再次启动应用程序。

根据第二条评论,我的Service 应该能够自行决定它想要做什么 - 相反,它会在我没有任何操作的情况下停止并稍后重新启动。

任何想法如何处理它?使用START_STICKY 的效果完全相同...

【问题讨论】:

    标签: android service android-service


    【解决方案1】:

    将您的服务放入foreground。请注意,当服务在前台运行时,您必须显示正在进行的通知。

    【讨论】:

    • 我不确定这怎么可能,但将服务置于前台并不能阻止它停止,但它不会稍后重新启动......
    • 你能把你的代码粘贴到某个地方吗?我用这种方法运行良好。您还可以测试正在使用前台服务(包括正在进行的通知)的音乐播放器,该服务在播放器“滑动退出”后不会停止。
    • 这可能不再适用于 KitKat,因为前台服务的错误导致应用程序无论如何都会被杀死。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 2021-12-07
    相关资源
    最近更新 更多