其他分享
首页 > 其他分享> > android – 如何为worker类实现Dagger?

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