我有一些使用 Xposed 挂钩在第三方应用程序中加载和执行的类。
其中一种方法占用大量资源,并使运行它的App崩溃。我发现我可以使用 WorkManager 运行它,这样系统将自动处理负载。
注入的类不是普通Android应用程序的一部分(清单没有应用程序标签,即使包含,也不会作为普通应用程序运行)。而是将类编译并加载到第三方应用程序中,然后直接在内部执行。
由于 WorkManager 依靠 Application 创建实例,所以我发现也许可以手动创建该实例。
所以在我调用的代码中的某处:
WorkManager.initialize(context, new Configuration.Builder().build());
然后在我的方法中,我使用了类似的内容:
WorkManager mWorkManager = WorkManager.getInstance();
mWorkManager.enqueue(OneTimeWorkRequest.from(MyWorker.class));
但是在初始化过程中出现以下错误:
Resources$NotFoundException: Resource ID #0x7f020002 type #0x3 is not valid
我不确定 WorkManager 在寻找什么资源,正如我之前提到的,我只有几个班级,没有 res 文件夹
我愿意接受其他建议来替换 WorkManager
答案 0 :(得分:0)
WorkManager确实会寻找资源来确定是否需要基于API级别启用/禁用Scheduler
。这是有问题的实际文件(https://android.googlesource.com/platform/frameworks/support/+/androidx-master-dev/work/workmanager/src/main/res/values/values.xml)。
我不知道为什么这些资源没有正确合并。