gpt4 book ai didi

android - Activity 和 JobIntentService 生命周期

转载 作者:太空宇宙 更新时间:2023-11-03 13:08:31 26 4
gpt4 key购买 nike

我正在运行 JobIntentService 以在后台执行任务。使用 JobIntentService 的原因是这样用户可以在操作发生时最小化屏幕,即使 Android 操作系统破坏了 Activity JobIntentService 仍会继续运行并且如果用户回来,他可以更新结果。

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

当用户自己关闭应用程序时,有什么方法可以通知JobIntentService

非常感谢任何帮助。

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

最佳答案

你的 Service 的原因is killed when the user swipe the task from the recent tasks list 当用户从最近的任务列表中滑动任务时,Android 只是终止了托管应用程序的操作系统进程。然后 Android 将重新启动任何 Service正在它刚刚杀死的操作系统进程中运行。

这种行为随着时间的推移而改变,并且在不同版本的 Android 上有所不同,而且一些制造商有自己的自定义 ROM,他们以不同的方式实现这种行为。

您无能为力确保您的 Service不会被 Android 杀死和重启。您可以试试这个,这可能会有所帮助:

把你的 Service在一个单独的操作系统进程中。为此添加 android:process=":remote"<service> list 中的标记。在某些版本的 Android 上,从最近任务列表中删除任务只会终止托管 Activity 的操作系统进程。这可能会阻止 Android 杀死你的 Service在这种情况下。

你也说onTaskRemoved()没有被调用,你的 Service Android kill 后不会自动重启。这发生在制造商试图积极节省电池电量的某些设备上。这在中国设备(小米、中兴等)和一些 LG、华为和联想设备上也很常见。在这些设备上有一个允许在后台运行的应用程序列表(也称为“ protected ”应用程序)。您必须在这些设备上手动将您的应用添加到此列表(或告诉您的用户他们需要手动将您的应用添加到列表)。如果您的应用程序在“ protected 应用程序”或“允许在后台运行的应用程序”列表中,那么 Android 现在可能会终止您的 Service如果用户从最近的任务列表中滑动任务,或者如果它确实终止了它,它应该调用 onTaskRemoved()它也应该自动重启 Service立即。

关于android - Activity 和 JobIntentService 生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51572385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com