工作经理适合这些情况吗?
Is a work manager good for these situations?
我正在开发一些需要 运行 在后台进行 UI 更新的功能,例如从输入流创建文件并在完成后通知用户
尝试使用工作管理器完成此任务后。它运行良好,但您认为它是一个不错的选择吗?
注意:我对在此过程中更新用户界面非常感兴趣,如您所知,已弃用异步任务
是的。最初,WorkManager
是一个用于管理可延迟后台工作的库。然而现在,WorkManager
is a recommended solution for any persistent work, that is, the work that must be completed - no matter if the application process is stopped, or even the device is rebooted. From version 2.3.0-alpha01
, WorkManager
provides first-class support for setting and observing intermediate progress for workers。更新用户界面正是此功能的用途。
对我来说,推理 WorkManager 的最简单方法是扩展您的应用程序范围:
Activity
范围 - 作品将持续到 onDestroy
生命周期事件
ViewModel
范围 - 作品与 ViewModel 一样长。如果您离开 - 工作停止
Application
范围(例如协程的 GlobalScope
)- 工作与应用进程一样长。如果用户在任务管理器中结束应用程序进程或系统将其终止 - 工作丢失
WorkManager
- 作品在进程死亡和设备重启后仍然存在。它在引擎盖下的 Room DB 的帮助下持久化,因此您可以在重新启动应用程序进程后继续工作。
我正在开发一些需要 运行 在后台进行 UI 更新的功能,例如从输入流创建文件并在完成后通知用户
尝试使用工作管理器完成此任务后。它运行良好,但您认为它是一个不错的选择吗?
注意:我对在此过程中更新用户界面非常感兴趣,如您所知,已弃用异步任务
是的。最初,WorkManager
是一个用于管理可延迟后台工作的库。然而现在,WorkManager
is a recommended solution for any persistent work, that is, the work that must be completed - no matter if the application process is stopped, or even the device is rebooted. From version 2.3.0-alpha01
, WorkManager
provides first-class support for setting and observing intermediate progress for workers。更新用户界面正是此功能的用途。
对我来说,推理 WorkManager 的最简单方法是扩展您的应用程序范围:
Activity
范围 - 作品将持续到onDestroy
生命周期事件ViewModel
范围 - 作品与 ViewModel 一样长。如果您离开 - 工作停止Application
范围(例如协程的GlobalScope
)- 工作与应用进程一样长。如果用户在任务管理器中结束应用程序进程或系统将其终止 - 工作丢失WorkManager
- 作品在进程死亡和设备重启后仍然存在。它在引擎盖下的 Room DB 的帮助下持久化,因此您可以在重新启动应用程序进程后继续工作。