其他分享
首页 > 其他分享> > StrictMode AndroidBlockGuardPolicy.onReadFromDisk

StrictMode AndroidBlockGuardPolicy.onReadFromDisk

作者:互联网

我面临下一个问题:

StrictMode policy violation; ~duration=2235 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65567 violation=2
                                                                   at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1278)
                                                                   at libcore.io.BlockGuardOs.lseek(BlockGuardOs.java:162)
                                                                   at java.io.RandomAccessFile.seek(RandomAccessFile.java:603)
                                                                   at java.util.zip.Zip64.parseZip64EocdRecordLocator(Zip64.java:98)
                                                                   at java.util.zip.ZipFile.readCentralDir(ZipFile.java:419)
                                                                   at java.util.zip.ZipFile.<init>(ZipFile.java:175)
                                                                   at java.util.zip.ZipFile.<init>(ZipFile.java:131)
                                                                   at dalvik.system.DexPathList$Element.maybeInit(DexPathList.java:452)
                                                                   at dalvik.system.DexPathList$Element.findResource(DexPathList.java:499)
                                                                   at dalvik.system.DexPathList.findResource(DexPathList.java:360)
                                                                   at dalvik.system.BaseDexClassLoader.findResource(BaseDexClassLoader.java:67)
                                                                   at java.lang.ClassLoader.getResource(ClassLoader.java:403)
                                                                   at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:442)
                                                                   at ch.qos.logback.classic.util.ContextInitializer.getResource(Unknown Source)
                                                                   at ch.qos.logback.classic.util.ContextInitializer.findConfigFileURLFromAssets(Unknown Source)
                                                                   at ch.qos.logback.classic.util.ContextInitializer.autoConfig(Unknown Source)
                                                                   at org.slf4j.impl.StaticLoggerBinder.init(Unknown Source)
                                                                   at org.slf4j.impl.StaticLoggerBinder.<clinit>(Unknown Source)
                                                                   at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)
                                                                   at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
                                                                   at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)
                                                                   at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357)
                                                                   at com.my.utils.x.c(LogUtils.java:164)
                                                                   at com.my.utils.x.b(LogUtils.java:65)
                                                                   at com.my.Application.onCreate(Application.java:148)
                                                                   at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1018)
                                                                   at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4970)
                                                                   at android.app.ActivityThread.-wrap1(ActivityThread.java)
                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1560)
                                                                   at android.os.Handler.dispatchMessage(Handler.java:111)
                                                                   at android.os.Looper.loop(Looper.java:207)
                                                                   at android.app.ActivityThread.main(ActivityThread.java:5765)
                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)

我在3个地方收到此错误:

1) logger = LoggerFactory.getLogger(name);
2) mMessagesJobManager = new JobManager(this, configuration);
3) Fabric.with(this, new Crashlytics());

我在文档中找不到有关这些方法的任何信息.我只找到一种解决方案-使用AsyncTask,但是我应该解决它吗?如果是,为什么文档中不包含任何信息?
最好的祝福.

解决方法:

I didn’t find any info about these methods in documentation

这是因为它们都不是Android的一部分.据推测,它们来自您添加到应用程序的库(slf4j,Fabric,我猜可能是Firebase).

I found only one solution – use AsyncTask, but should I fix it?

好吧,您的应用程序崩溃了.如果您想发布此应用,则需要做一些事情以防止崩溃.

在您的代码中,您将StrictMode配置为对磁盘读取应用刑罚().因此,您的选择是:

>将该磁盘I / O从主应用程序线程中移出,这通常是最好的解决方案,尽管它可能不切实际(假设您不控制库的实现)
>停止将StrictMode配置为对磁盘读取应用惩罚Death().

If yes, why documentation doesn’t contain any info about it?

如果您的意思是documentation on StrictMode.除此之外,我想Google希望专业的应用程序开发人员可以阅读文档,学习课程或寻找其他方法来学习Android应用程序开发,而本文档没有直接介绍这些内容.

标签:android-strictmode,android
来源: https://codeday.me/bug/20191111/2018946.html