1

嗨,我正在我的项目中尝试新的 WorkerManager,但我无法弄清楚如何将我的 DbManager 类注入到我的 TaskWorker 中,以便在 workermanager 的 doWork() 方法中使用 dbmanager。由于 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;}
}
}
4

1 回答 1

0

要首先在工作类中注入字段,您需要在 AppComponent 中注入工作类:

 fun inject(worker: TaskWorker)

然后在工人的 doWork() 中,您需要调用注入:

 if(applicationContext is MyApp){
        var daggerAppComponent= DaggerAppComponent.builder().application(applicationContext as MyApp).build()
        daggerAppComponent.inject(this)
    }
于 2018-05-31T20:25:15.237 回答