android – 如何为worker类实现Dagger?
作者:互联网
由于Worker类是由框架(WorkerManager)创建的,我们如何将@Inject字段用于Worker?
解决方法:
您必须在模块中使用@Provides注释提供类以进行注入.
首先创建一个包含将提供类的模块的组件.
@Component(modules = {Module.class})
public interface Component1{
void inject(SyncWorker syncWorker);
}
模块类
@Module
public class Module{
@Provides
public ISettingRepository getSettingRepo(){
return new ISettingRepository();
}
}
现在编写代码,这是一个构造函数,用于将组件注入到worker类中.
public class SyncWorker extends Worker {
@Inject
ISettingRepository settingRepository;
public SyncWorker(){
DaggerComponent1.builder().build().inject();
}
@NonNull
@Override
public Result doWork() {
sync();
return Result.SUCCESS;
}
private void sync() {
}
}
标签:android,android-jetpack,dagger-2,android-workmanager 来源: https://codeday.me/bug/20191001/1839625.html