【问题标题】:Android Workmanager run job in a fixed processAndroid Workmanager 在固定进程中运行作业
【发布时间】:2018-08-14 16:24:04
【问题描述】:

我有一个必须在固定进程中运行的后台任务。我目前正在为此使用JobIntentService。但是,我想迁移到 WorkManager 以利用基于网络的任务延迟。

有没有使用 WorkManager 或任何其他 API 14-28 兼容方式的解决方案?

【问题讨论】:

标签: android android-workmanager


【解决方案1】:

WorkManager 2.5.0 新增,有一个workmanager-multiprocess 模块来解决这个问题。您可以使用 implementation "androidx.work:work-multiprocess:$work_version"

要使用它,您可以注册一个新的WorkManager.Initializer,详见本页: https://developer.android.com/topic/libraries/architecture/workmanager/advanced/custom-configuration

当您注册此初始化程序时,您的配置需要包含对.setDefaultProcessName("com.example.app:processName") 的调用。这将使调用发生在正确的过程中。我现在正在对此进行测试,它似乎可以正常工作,但如果有任何问题,我会更新这篇文章。

【讨论】:

    【解决方案2】:

    这种方法怎么样:

    
            <service
                    android:name="androidx.work.impl.background.systemjob.SystemJobService"
                    android:process=":worker"/>
    

    只需将声明放入您的 Manifest 中,ManifestMerger 将使用 android:process=":worker" 创建最终合并的 Manifest(worker 是非主进程的名称,可以是另一个)

    【讨论】:

      【解决方案3】:

      【讨论】:

      • 这似乎无法控制它在哪个进程中运行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多