如果直接从应用程序托盘中删除了应用程序,如何取消任何/所有工作经理的请求?

时间:2019-05-07 12:16:53

标签: android android-service android-architecture-components android-jetpack android-workmanager

我正在尝试在应用程序中使用Android WorkManager,以便安排一些后台任务。要求是在直接从应用程序托盘中删除该应用程序时取消API请求。

通过使用Service类-> onTaskRemoved方法,我能够检测是否从应用程序托盘中删除了应用程序。在这里,我正在发出WorkManager API取消请求。

public void onTaskRemoved(Intent rootIntent) {
    super.onTaskRemoved(rootIntent);
    Log.d("onTaskRemoved","onTaskRemoved called");
    WorkManager.getInstance().cancelAllWork();
}

这按预期工作正常。请提出是否还有其他更好的选择来实现它。

2 个答案:

答案 0 :(得分:1)


对于某些android设备(对于某些供应商)它们的实现就像从应用程序托盘中删除了任何应用程序一样,意味着它们将强制停止该应用程序。服务,工作经理也停止了。


对于其他一些android设备(对于某些  其他供应商实施,就像从应用程序托盘中删除了任何应用程序一样,意味着它们将仅停止/杀死该应用程序的当前活动,而不是强制停止该应用程序。因此,服务,工作经理没有停止。
首先,您需要检查目标设备属于哪个类别。

答案 1 :(得分:1)

如果您需要这样做,我认为您可能使用了错误的工具。 WorkManager专门用于需要持久保存并在某个时刻执行的请求。考虑改用执行器或协程。