繁体   English   中英

带有 WorkManager 的 Dagger 2 没有 Dagger-Android

[英]Dagger 2 with WorkManager without Dagger-Android

我正在尝试将 Dagger2 标准库与WorkManager一起使用。 但是在互联网上的示例中,他们使用的是我不想要的 dagger-android。 那么,您能否为此提出一些解决方案,以便我可以使用Dagger2 ,而不是dagger-androidWorkManager

提前感谢您的回答!

此示例使用Kotlin

class YourWorker(ctx: Context, params: WorkerParameters) : Worker(ctx, params) {
   @Inject
   lateinit var yourModel: YourModel

   init {
      getServiceComponent().inject(this) // or you create your component here and inject worker to it
   }
}
@ServiceScope
@Component(
        dependencies = {ApplicationComponent.class}
)
public interface ServiceComponent {
    void inject(YourWorker worker);
}

你可以使用 Hilt 注入一个 worker。

在你的工人的构造函数中使用@WorkerInject 您还必须使用 @Assisted 注释ContextWorkerParameters依赖@Assisted

class ExampleWorker @WorkerInject constructor(
  @Assisted appContext: Context,
  @Assisted workerParams: WorkerParameters,
  workerDependency: WorkerDependency
) : Worker(appContext, workerParams) { ... }

并在您的Application class 中设置 WorkManager 配置:

@HiltAndroidApp
class ExampleApplication : Application(), Configuration.Provider {

  @Inject lateinit var workerFactory: HiltWorkerFactory

  override fun getWorkManagerConfiguration() =
      Configuration.Builder()
            .setWorkerFactory(workerFactory)
            .build()
}

参考: https://developer.android.com/training/dependency-injection/hilt-jetpack#workmanager

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM