【问题标题】:Android StrictModeDiskReadViolation when app startup应用启动时的Android StrictModeDiskReadViolation
【发布时间】:2016-07-01 18:13:19
【问题描述】:

我已经通过代码在我的应用上启用了StrictMode

public void onCreate() {
    setStrictMode();
    super.onCreate();
}

private void setStrictMode() {
    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
            .detectAll()
            .penaltyLog()
            .penaltyDeath()
            .build());
    StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
            .detectAll()
            .penaltyLog()
            .build());
}

我在以下日志启动时发现崩溃:

StrictMode 政策违规; ~duration=0 毫秒:android.os.StrictMode$StrictModeDiskReadViolation:策略=95 违规=2 在 android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1137) 在 libcore.io.BlockGuardOs.open(BlockGuardOs.java:182) 在 libcore.io.IoBridge.open(IoBridge.java:442) 在 java.io.FileInputStream.(FileInputStream.java:76) 在 android.graphics.Typeface.getFullFlipFont(Typeface.java:582) 在 android.graphics.Typeface.getFontPathFlipFont(Typeface.java:530) 在 android.graphics.Typeface.SetFlipFonts(Typeface.java:717) 在 android.graphics.Typeface.SetAppTypeFace(Typeface.java:844) 在 android.app.Application.onCreate(Application.java:108)

我认为是io操作违反主线程,我的设备是三星s6,android版本5.1.1,但是我在任何地方都找不到方法getFullFlipFont,如果我禁用strictmode就可以了,在哪里io违规发生了吗?

【问题讨论】:

    标签: android


    【解决方案1】:

    这似乎发生在三星的手机上。在三星 S7 上运行 StrictMode 时,我遇到了同样的问题。但在 Nexus 6P 上运行时,问题不存在。

    解决此问题的两种方法。一种是在您的应用程序super.onCreate(). 之后打开您的严格模式这并不理想,因为我相信您会在此过程中遇到不属于您的代码的其他问题。

    另一个是压制它。你可以看看this page.那是在使用 Kotlin,但是你可以想办法为 Java 工作,但是有点麻烦。

    或者,您可以考虑尝试使用这种方法抑制Filter Android StrictMode violations by duration

    【讨论】:

      猜你喜欢
      • 2012-10-30
      • 2018-09-25
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多