【问题标题】:How to avoid worker to run when app is paused - android应用程序暂停时如何避免工作人员运行 - android
【发布时间】:2020-11-09 13:58:16
【问题描述】:
我必须每 15 分钟向服务器执行一次定期请求以更新数据库信息,这应该在用户使用应用程序时异步运行,如果应用程序关闭或暂停,它不应该在应用程序之前继续工作已恢复
我正在使用 WorkManager 来执行此操作并且已经在工作,但我意识到当我最小化我的应用程序时,工作人员会每隔 15 分钟调用一次 doWork()。杀死应用程序效果很好,因为 doWork() 没有被调用。
所以问题是如何在应用程序最小化时禁用我的工作人员?或者我应该使用什么来代替 WorkManager?
【问题讨论】:
标签:
java
android
kotlin
android-workmanager
periodic-task
【解决方案1】:
- 扩展
Application 类(并在清单中注册)
- 使用
registerActivityLifecycleCallbacks 并在内部注册Application.ActivityLifecycleCallbacks 设置一些值,例如activitiesStarted++ 在onStart 和activitiesStarted-- 在onStop
- 当您的
WorkManager 触发您的代码时,首先检查您的Activities 启动了多少,如果==0 则所有都“归巢”(或被杀死)
在HERE 你有一些示例如何正确地做到这一点
还有一些聪明的库供您使用 - Lifecycle