1 回答
TA贡献1831条经验 获得超10个赞
如您链接的文章中所述,您需要将WorkManager 的自定义配置与自定义 WorkerFactory 一起使用,将附加参数传递给您的 Worker 类:
public class UIUpdaterWorker extends Worker {
private String TAG = getClass().getSimpleName();
public UIUpdaterWorker(
@NonNull Context context,
@NonNull WorkerParameters workerParams,
@NonNull DBModel dbModel
) {
super(context, workerParams);
}
@NonNull
@Override
public Result doWork() {
Log.d(TAG, dbModel.toString());
return Result.success();
}
}
然后你可以用 Dagger 注入它(DBModel在你的情况下)。
我喜欢 WorkManager 2.1.0-alpha02中添加的新“DelegatingWorkerFactory”功能(或者您可以自己采用类似的设计)。我制作了一个 PoC(在 Kotlin 中),它创建了一个自定义配置并为需要用匕首注入额外参数的特定工作人员注册了一个 WorkerFactory。
你可以在这个Plaid 分支上找到代码,Worker 和 WorkerFactory 在这里。要为您的具体案例提供更多指导,了解更多背景信息会很有帮助。我可以想象您已经在其他类中注入了 dbModel。
您可以在注册自定义 WorkerFactory 时执行相同的操作,注入 dbModel,这样您就可以将其作为参数传递给 Worker 类。
添加回答
举报