onTaskRemoved() 在 Android 8.0 Oreo API 级别 26 上不起作用



在装有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()
}
}

当应用程序任务从最近的应用程序中删除时,我需要

  1. 停止进程
  2. 完成第二个应用任务

如果 AppTasks.size = 2 并且从最近的应用程序中删除了 1 个任务,则进程不会被终止,因为第二个应用程序任务仍在内存中。

更新:

  1. 当使用JobIntentService.enqueueWork则在JobIntentService.onHandleWork()JobIntentService.onDestroy()之后立即调用
  2. 当使用时JobService.schedule()抛出IllegalArgumentException当夏杜勒工作没有限制。

附言:每检查X秒是任务被移除的想法似乎不是一个好主意。

您可以覆盖JobService#onStop(),然后创建一条消息并将其传递给其他服务,当该服务收到该消息时,您可以清理它的工作并杀死它。

由于设备制造商的自定义实现或 android 奥利奥中的新实现,START_STICKY的预期行为可能已更改

您可以使用JobScheduler在定期间隔后监视服务生命周期。 如果服务被销毁,则可以在实际销毁服务之前onDestroy()方法执行任务。

这将从onTaskremoved()方法中删除依赖项。

请参考以下有类似问题的问题 onTaskRemoved(( 在 Home 按下并杀死应用程序时未被调用

相关内容

  • 没有找到相关文章

最新更新