gpt4 book ai didi

android - 使用 WorkManager 排队工作时出现 IllegalAccessException

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:43:27 26 4
gpt4 key购买 nike

尝试使用 WorkManager 1.0 稳定版入队时,我得到了 IllegalAccessException。这是堆栈跟踪:

E/WM-WorkerFactory: Could not instantiate com.pocket.sdk.util.service.BackgroundSync$SyncJob
java.lang.IllegalAccessException: java.lang.Class<com.example.BackgroundManager$BackgroundWorker> is not accessible from java.lang.Class<androidx.work.WorkerFactory>
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at androidx.work.WorkerFactory.createWorkerWithDefaultFallback(WorkerFactory.java:92)
at androidx.work.impl.WorkerWrapper.runWorker(WorkerWrapper.java:233)
at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:127)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)

worker 是一个内部类,声明如下:

private static class BackgroundWorker extends Worker {
// ...
}

如何解决这个异常?

最佳答案

看起来 WorkManager 正在使用反射来创建 worker 的实例。但是,因为它被声明为 private 内部类,所以 WorkerFactory 类无法访问它。

我所做的只是将我的 worker 声明为 public 内部类,如下所示:

public static class BackgroundWorker extends Worker {
// ...
}

我还确保构造函数是公开的。

但我很想找到一种不需要让 worker 暴露在全世界的解决方案。

关于android - 使用 WorkManager 排队工作时出现 IllegalAccessException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55120525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com