首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有WorkManager的Dagger 2,没有Dagger-安卓

带有WorkManager的Dagger 2,没有Dagger-安卓
EN

Stack Overflow用户
提问于 2020-06-27 18:13:07
回答 2查看 656关注 0票数 0

我正在尝试在WorkManager中使用Dagger2标准库。但在互联网上的例子中,他们使用的是dagger-android,这是我不想要的。所以,你能推荐一些解决方案吗?这样我就可以使用Dagger2,而不是dagger-androidWorkManager

感谢您的提前答复!

EN

回答 2

Stack Overflow用户

发布于 2020-06-27 19:05:35

这个例子使用了Kotlin

代码语言:javascript
复制
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
   }
}
代码语言:javascript
复制
@ServiceScope
@Component(
        dependencies = {ApplicationComponent.class}
)
public interface ServiceComponent {
    void inject(YourWorker worker);
}
票数 1
EN

Stack Overflow用户

发布于 2020-06-29 13:04:04

你可以使用Hilt注入一个工人。

在worker的构造函数中使用@WorkerInject。还必须使用@Assisted注释ContextWorkerParameters依赖项

代码语言:javascript
复制
class ExampleWorker @WorkerInject constructor(
  @Assisted appContext: Context,
  @Assisted workerParams: WorkerParameters,
  workerDependency: WorkerDependency
) : Worker(appContext, workerParams) { ... }

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

代码语言:javascript
复制
@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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62608645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档