【问题标题】: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】:
    1. 扩展Application 类(并在清单中注册)
    2. 使用registerActivityLifecycleCallbacks 并在内部注册Application.ActivityLifecycleCallbacks 设置一些值,例如activitiesStarted++onStartactivitiesStarted--onStop
    3. 当您的WorkManager 触发您的代码时,首先检查您的Activities 启动了多少,如果==0 则所有都“归巢”(或被杀死)

    HERE 你有一些示例如何正确地做到这一点

    还有一些聪明的库供您使用 - Lifecycle

    【讨论】:

    • 谢谢,我使用了这个答案,现在可以根据需要运行
    猜你喜欢
    • 2015-08-27
    • 1970-01-01
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多