Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
496 views
in Technique[技术] by (71.8m points)

android - How to implement Dagger for worker classes?

Since the Worker class is created by the framework (WorkerManager), how can we use @Inject fields into the Worker?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You have to provide class using @Provides annotation in the module to inject.

First create a component containing a module which will provide the class.

@Component(modules = {Module.class})
public interface Component1{

    void inject(SyncWorker syncWorker);
}

Module Class

@Module
public class Module{

    @Provides
    public ISettingRepository getSettingRepo(){
        return new ISettingRepository();
    }

}

Now write in your code, a constructor that is used to inject the component into your worker class.

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() {

    }
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...