首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >活动与JobIntentService生命周期

活动与JobIntentService生命周期
EN

Stack Overflow用户
提问于 2018-07-28 14:41:13
回答 1查看 2.1K关注 0票数 4

我正在运行一个JobIntentService来执行后台任务。使用JobIntentService的原因是,这样用户就可以在操作发生时最小化屏幕,即使Android破坏了活动,JobIntentService仍然会继续运行,如果用户回来,就可以根据结果进行更新。

但是我有一个例子,假设用户自己关闭应用程序,那么我也想停止JobIntentService

当用户自己关闭应用程序时,有没有办法通知JobIntentService

任何帮助都是非常感谢的。

onTaskRemoved编辑:我尝试使用,这是没有用的,我的测试设备没有调用它(我确信许多其他设备也不会调用它)。另外,当应用程序从最近的列表中删除时,服务会自动停止,但是当应用程序再次打开时,服务会再次重新启动,这正是我不想要的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-31 20:32:35

当用户从最近的任务列表中删除任务时,您的Service被杀死的原因是,当用户从最近的任务列表中删除任务时,Android只会杀死承载应用程序的OS进程。然后,Android将重新启动在其刚刚杀死的操作系统进程中运行的任何Service

随着时间的推移,这种情况发生了变化,在不同版本的Android上也有所不同,而且一些制造商也有自己的定制ROM,它们以不同的方式实现了这一点。

没有什么可以保证你的Service不会被安卓系统杀死和重新启动。您可以尝试这样做,这可能会有帮助:

将您的Service放在一个单独的操作系统进程中。为此,请将android:process=":remote"添加到清单中的<service>标记中。在某些版本的Android上,从最近的任务列表中删除任务只会杀死承载这些活动的OS进程。这可能会阻止安卓在这种情况下杀死你的Service

您还会说,onTaskRemoved()没有被调用,并且在Android杀死它之后,Service不会自动重新启动。这种情况发生在一些设备上,在这些设备中,制造商正在积极地节省电池的能量。这在中国设备(小米、中兴等)上很常见。LG、华为和联想的一些设备也表现出了这种行为。在这些设备上,有一个允许在后台运行的应用程序列表(也称为“受保护的”应用程序)。您必须在这些设备上手动将应用程序添加到此列表中(或者告诉用户他们需要手动将应用程序添加到列表中)。如果您的应用程序在“受保护的应用程序”或“允许在后台运行的应用程序”列表中,那么如果用户从最近的任务列表中删除任务,Android现在可能会关闭您的onTaskRemoved(),或者如果它确实杀死了它,它应该调用onTaskRemoved(),并且应该立即自动重新启动Service

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51572385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档