在装有Android Oreo 8.0(API级别26(的设备上JobService.onTaskRemoved()
未调用
- 如何收听这样的事件?
停止工作时使用的代码:
class TaskRemovalWatcherService: JobIntentService() {
...
override fun onTaskRemoved(rootIntent: Intent?) {
//not called on Android Oreo
super.onTaskRemoved(rootIntent);
onAppRemovedFromRecentApps()
}
}
当应用程序任务从最近的应用程序中删除时,我需要
- 停止进程
- 完成第二个应用任务
如果 AppTasks.size = 2 并且从最近的应用程序中删除了 1 个任务,则进程不会被终止,因为第二个应用程序任务仍在内存中。
更新:
- 当使用
JobIntentService.enqueueWork
则在JobIntentService.onHandleWork()
JobIntentService.onDestroy()
之后立即调用 - 当使用时
JobService.schedule()
抛出IllegalArgumentException
当夏杜勒工作没有限制。
附言:每检查X秒是任务被移除的想法似乎不是一个好主意。
您可以覆盖JobService#onStop()
,然后创建一条消息并将其传递给其他服务,当该服务收到该消息时,您可以清理它的工作并杀死它。
由于设备制造商的自定义实现或 android 奥利奥中的新实现,START_STICKY
的预期行为可能已更改
您可以使用JobScheduler
在定期间隔后监视服务生命周期。 如果服务被销毁,则可以在实际销毁服务之前onDestroy()
方法执行任务。
这将从onTaskremoved()
方法中删除依赖项。
请参考以下有类似问题的问题 onTaskRemoved(( 在 Home 按下并杀死应用程序时未被调用