我正在运行一个JobIntentService
在后台执行任务。使用理由JobIntentService
这样用户就可以在操作发生时最小化屏幕,即使 Android 操作系统破坏了该 ActivityJobIntentService
仍将继续运行,如果用户回来,他可以更新结果。
但我有一个情况,假设用户自己关闭了应用程序,那么我想停止JobIntentService
also.
有什么办法可以通知JobIntentService
当用户自己关闭应用程序时。
任何帮助将不胜感激。
编辑:我尝试使用onTaskRemoved
这是没有用的,我的测试设备不会调用它(我确信许多其他设备也不会调用它)。此外,当应用程序从最近的列表中删除时,该服务会自动停止,但当再次打开应用程序时,该服务会再次重新启动,这是我不想要的。
原因是你的Service
当用户从最近的任务列表中滑动任务时,Android 会在用户从最近的任务列表中滑动任务时杀死托管应用程序的操作系统进程。 Android 将重新启动任何Service
正在它刚刚杀死的操作系统进程中运行。
随着时间的推移,这种行为已经发生了变化,并且在不同版本的 Android 上也有所不同,而且一些制造商有自己的自定义 ROM,他们以不同的方式实现这一点。
您无法采取任何措施来确保您的Service
不会被 Android 杀死并重新启动。您可以尝试一下,这可能会有所帮助:
把你的Service
在单独的操作系统进程中。要执行此操作,请添加android:process=":remote"
to the <service>
清单中的标签。在某些版本的 Android 上,从最近任务列表中滑动任务只会杀死托管活动的操作系统进程。这可能会阻止 Android 杀死你的Service
在这种情况下。
你也这么说onTaskRemoved()
没有被调用并且你的Service
Android 杀死后不会自动重新启动。这种情况发生在制造商试图积极节省电池电量的某些设备上。这在中国设备(小米、中兴等)上很常见,一些 LG、华为和联想设备也出现这种行为。在这些设备上有一个允许在后台运行的应用程序列表(也称为“受保护”应用程序)。您必须在这些设备上手动将您的应用添加到此列表(或告诉您的用户他们需要手动将您的应用添加到列表)。如果您的应用程序位于“受保护的应用程序”或“允许在后台运行的应用程序”列表中,那么 Android 现在可能会杀死您的应用程序Service
如果用户从最近任务列表中滑动任务,或者确实杀死了该任务,则应该调用onTaskRemoved()
并且它还应该自动重新启动Service
立即地。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)