使用WorkManager入队时出现IllegalAccessException

使用WorkManager入队时出现IllegalAccessException,第1张

概述尝试使WorkManager1.0稳定版入队时出现IllegalAccessException.这是堆栈跟踪:E/WM-WorkerFactory:Couldnotinstantiatecom.pocket.sdk.util.service.BackgroundSync$SyncJobjava.lang.IllegalAccessException:java.lang.Class<com.example.BackgroundManager$Backgroun

尝试使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正在使用反射创建工作程序的实例.但是,因为它被声明为私有内部类,所以尝试执行此 *** 作的WorkerFactory类无法访问.

我所做的就是简单地将我的工人声明为公共内部类,如下所示:

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

我还确保构造函数是公共的.

但是我很想找到一种解决方案,不需要将工人暴露于全世界.

总结

以上是内存溢出为你收集整理的使用WorkManager入队时出现IllegalAccessException全部内容,希望文章能够帮你解决使用WorkManager入队时出现IllegalAccessException所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1092344.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存