我有一个后台任务需要在固定进程中运行。目前我正在使用 JobIntentService
来实现这个功能。然而,我想迁移到 WorkManager,以利用基于网络的任务延迟。
是否有任何解决方案可以在 WorkManager 中或任何其他兼容 API 14-28 的方式中实现?
我有一个后台任务需要在固定进程中运行。目前我正在使用 JobIntentService
来实现这个功能。然而,我想迁移到 WorkManager,以利用基于网络的任务延迟。
是否有任何解决方案可以在 WorkManager 中或任何其他兼容 API 14-28 的方式中实现?
WorkManager 2.5.0 中新增了 workmanager-multiprocess 模块,用于解决该问题。您可以使用以下代码实现:
implementation "androidx.work:work-multiprocess:$work_version"
要使用此功能,请按照此页面中的详细说明注册一个新的 WorkManager.Initializer
:
当您注册此初始化程序时,您的配置需要包括调用 .setDefaultProcessName("com.example.app:processName")
的语句。这将使调用发生在正确的进程中。我正在测试此功能,它似乎可以正常工作,但如果有任何问题,我会更新此帖子。
这种方法怎么样:
<service
android:name="androidx.work.impl.background.systemjob.SystemJobService"
android:process=":worker"/>
android:process=":worker"
(worker
是非主进程的名称,可以是其他名称)。