小编apa*_*luk的帖子

当客户端调用 WorkManager.initialize() 时,WorkManager 无法在库中工作

我正在编写一个使用 WorkManager 的 Android 库。在代码中的某个地方我称之为这样的:

val uploadTripRequest = OneTimeWorkRequest.Builder(UploadTripWorker::class.java)
    .setConstraints(someConstraints)
    .setBackoffCriteria(BackoffPolicy.EXPONENTIAL, OneTimeWorkRequest.MIN_BACKOFF_MILLIS, TimeUnit.MILLISECONDS)
    .build()

WorkManager.getInstance(context)
    .enqueueUniqueWork(WORKER_NAME, ExistingWorkPolicy.REPLACE, uploadTripRequest)
Run Code Online (Sandbox Code Playgroud)

在我的 build.gradle 中我有:implementation 'androidx.work:work-runtime:2.2.0'

通常情况下,一切都很完美。当客户端应用程序调用https://developer.android.com/reference/kotlin/androidx/work/WorkManager.html#initialize时就会出现问题,例如:

WorkManager.initialize(context, Configuration.Builder().setWorkerFactory(myWorkerFactory).build())
Run Code Online (Sandbox Code Playgroud)

当调用此方法时,我的库中的 WorkManager 未按预期工作。doWork方法不在 my 上调用UploadTripWorker,但在 client 提供的工作线程上执行myWorkerFactory

从我的角度来看,它WorkManager在库中不可用,因为它是单例,有人可以通过initialize方法更改其行为。但我希望我错了。

我有什么办法可以解决这个问题吗?当然,我不能告诉我所有的客户不要使用WorkManager.initialize()方法。

android android-workmanager

4
推荐指数
1
解决办法
1121
查看次数

标签 统计

android ×1

android-workmanager ×1