为了账号安全,请及时绑定邮箱和手机立即绑定

WorkManager Java Android Dagger2

WorkManager Java Android Dagger2

繁花如伊 2022-12-21 16:41:51
我需要在仅使用 JAVA 的 Android 应用程序中使用 Workmanager(没有 Kotlin!!!)。在一个项目中,我们只使用 dagger2.8(没有 android-dagger!),我需要注入或访问一些注入类,如 DataBase。(它注入了 AppComponent)。已经尝试过: https : //proandroiddev.com/dagger-2-setup-with-workmanager-a-complete-step-by-step-guild-bb9f474bde37 在 kotlin 中并用 Java 重写。- 在项目中不起作用。(以及 StackOverflow 上的所有关闭标题)还有很多关于 web 的例子相互复制......(他们都是 Kotlin ......)我将所有库更新为实际版本,从 3.2.1 更新到 3.4.1,包含所有暗示的内容。使用:AS 3.4.1 | GP:3.4.1 | gv:5.1.1 库:Dagger2、Retrofit2、OkHttp、Gson、ButterKnife、RxJava2、Room、Rabbit、WorkManager。它在 28 sdk 上有我的工人:private String TAG = getClass().getSimpleName();DBModel dbModel; // this is injected room model in appComponentpublic UIUpdaterWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {    super(context, workerParams);}@NonNull@Overridepublic Result doWork() {    Log.d(TAG, dbModel.toString()); // here is null    return Result.success();我在同一个组件中尝试过并分开。它不会起作用。有 null 或项目不生成。
查看完整描述

1 回答

?
慕哥6287543

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 类。


查看完整回答
反对 回复 2022-12-21
  • 1 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信