[英]Dagger 2 with WorkManager without Dagger-Android
我正在尝试将 Dagger2 标准库与WorkManager
一起使用。 但是在互联网上的示例中,他们使用的是我不想要的 dagger-android。 那么,您能否为此提出一些解决方案,以便我可以使用Dagger2
,而不是dagger-android
和WorkManager
。
提前感谢您的回答!
此示例使用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 注释Context
和WorkerParameters
依赖@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.