Raj*_*h K 4 android android-service android-lifecycle android-activity
我正在运行 aJobIntentService以在后台执行任务。使用的原因JobIntentService是这样用户可以在操作发生时最小化屏幕,即使 Android 操作系统破坏了 ActivityJobIntentService仍将继续运行,如果用户回来,他可以更新结果。
但是我有一个案例,假设用户自己关闭了应用程序,然后我也想停止应用程序JobIntentService。
JobIntentService当用户自己关闭应用程序时,有什么方法可以通知。
任何帮助将不胜感激。
编辑:我尝试使用onTaskRemoved它是没有用的,因为我的测试设备不会调用它(我相信许多其他设备也不会调用它)。此外,当应用程序从最近的列表中删除时,该服务会自动停止,但在再次打开应用程序时再次重新启动,这是我不想要的。
Service当用户从最近任务列表中滑动任务时,你被杀死的原因是当用户从最近任务列表中滑动任务时,Android 只是杀死了托管应用程序的操作系统进程。然后Service,Android 将重新启动在它刚刚杀死的操作系统进程中运行的任何进程。
这种行为随着时间的推移而改变,并且在不同版本的 Android 上有所不同,而且一些制造商有自己的自定义 ROM,他们以不同的方式实现这一点。
您无法做任何事情来确保您Service不会被 Android 杀死并重新启动。你可以试试这个,这可能会有所帮助:
将您Service放在一个单独的操作系统进程中。为此,请添加android:process=":remote"到<service>清单中的标记。在某些版本的 Android 上,从最近任务列表中滑动任务只会杀死托管活动的操作系统进程。Service在这种情况下,这可能会阻止 Android 杀死您。
您还说onTaskRemoved()没有调用它,并且Service在 Android 杀死它后您不会自动重新启动。这种情况发生在制造商试图积极节省电池电量的某些设备上。这在中国设备(小米、中兴等)上很常见,一些 LG、华为和联想设备也表现出这种行为。在这些设备上,有一个允许在后台运行的应用程序列表(也称为“受保护的”应用程序)。您必须在这些设备上手动将您的应用添加到此列表中(或告诉您的用户他们需要手动将您的应用添加到列表中)。如果您的应用程序在“受保护的应用程序”或“允许在后台运行的应用程序”列表中,那么Service如果用户从最近任务列表中滑动任务,或者它确实杀死了它,Android 现在可能会终止您的应用程序,onTaskRemoved()它也应该Service立即自动重新启动。
| 归档时间: |
|
| 查看次数: |
1923 次 |
| 最近记录: |