我正在尝试在WorkManager中使用Dagger2标准库。但在互联网上的例子中,他们使用的是dagger-android,这是我不想要的。所以,你能推荐一些解决方案吗?这样我就可以使用Dagger2,而不是dagger-android和WorkManager。
感谢您的提前答复!
发布于 2020-06-27 19:05:35
这个例子使用了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);
}发布于 2020-06-29 13:04:04
你可以使用Hilt注入一个工人。
在worker的构造函数中使用@WorkerInject。还必须使用@Assisted注释Context和WorkerParameters依赖项
class ExampleWorker @WorkerInject constructor(
@Assisted appContext: Context,
@Assisted workerParams: WorkerParameters,
workerDependency: WorkerDependency
) : Worker(appContext, workerParams) { ... }并在您的Application类中设置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
https://stackoverflow.com/questions/62608645
复制相似问题