Внедрите объект, используя dagger 2, такой как DbManager в Worker, чтобы выполнить операцию db внутри метода doWork (), #WorkerManager - PullRequest
0 голосов
/ 26 мая 2018

Привет, я пробую новый WorkerManager в своем проекте и не могу понять, как внедрить мой класс DbManager в мой TaskWorker, чтобы использовать dbmanager внутри метода doWork () workermanager.Также не удалось выяснить из-за создания объекта TaskWorker в некоторых скрытых.

пример кода

 mWorkManager.beginUniqueWork(IMAGE_MANIPULATION_WORK_NAME,
                ExistingWorkPolicy.APPEND,
                OneTimeWorkRequest.from(TaskWorker.class));

>

public class TaskWorker extends Worker {

    private static final String TAG = "TaskWorker";

    @Inject   
    DbManager dbManager;
    @NonNull
    @Override
    public WorkerResult doWork() {return null;}
}
}

1 Ответ

0 голосов
/ 31 мая 2018

Чтобы внедрить поля в рабочий класс, сначала вам нужно внедрить ваш рабочий класс внутри AppComponent:

 fun inject(worker: TaskWorker)

, а затем внутри doWork () работника, вам нужно вызвать inject:

 if(applicationContext is MyApp){
        var daggerAppComponent= DaggerAppComponent.builder().application(applicationContext as MyApp).build()
        daggerAppComponent.inject(this)
    }
...