【问题标题】:Difference between WorkManager and ExecutorService in android java?android java中WorkManager和ExecutorService的区别?
【发布时间】:2022-01-31 19:51:01
【问题描述】:

对于我应该使用android提供的WorkManager API还是java的库ExecutorService,我有点困惑。

我正在开发一个 MVVM java android 项目,我应该对我的数据库执行异步任务,但我不知道要使用哪个 API。我做了一些研究,但没有人比较它们。一些教程使用JobManager 进行异步调用,其他使用Executors

所以我的问题是谁能解释这两个 API 之间的区别以及它们的用例是什么?

谢谢!

【问题讨论】:

    标签: java android android-room executorservice android-workmanager


    【解决方案1】:

    首先,您需要阅读以下内容:

    https://developer.android.com/guide/background

    另外现在的新趋势不是使用线程,而是使用协程。所以不是 Executor,而是 Coroutine。

    同样在 Android 中,应用程序可以随时被终止。在这里你可以看到它被杀死的可能性如何:

    https://developer.android.com/guide/components/activities/process-lifecycle

    基本上,如果用户不与应用程序交互,您可能会被杀死。

    所以问题是:

    如果用户正在交互,您是否关心任务是否完成。如果最终结果是向用户展示一些东西 - 你不在乎应用程序是否死机。所以选择协程吧。

    如果您想确保任务已完成,您需要保持应用程序处于活动状态。从历史上看,这是通过服务完成的。但是现在没有必要自己创建一个。只需使用 WorkManager,它就会为您创建一个。

    基本上,WorkManager 的想法是整合您需要使用的所有 API,例如:

    • 观察数据变化
    • 观察网络状态
    • 让 APP 保持活力
    • 观察电池状态

    所以你的想法是:

    我希望这项任务能够完成。仅在 Wi-Fi 和用户为手机充电时执行此操作。

    您可以说您观察到图像或其他资源(如短信、联系人等)的变化。您可以说工作可以是周期性的,您可以链接工作等。

    基本上 WorkManager 是一个复杂的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-14
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多