gpt4 book ai didi

android - StrictMode 策略违规 : android. os.StrictMode$StrictModeDiskReadViolation : policy=327711 violation=2 at Application super. onCreate

转载 作者:太空宇宙 更新时间:2023-11-03 13:14:33 25 4
gpt4 key购买 nike

当我打开严格模式检测全部时,我的应用程序崩溃了应用程序的 super.onCreate()(即,甚至在我的任何代码执行任何操作之前)。

我的应用程序 onCreate 开启严格模式如下

override fun onCreate() {
if (BuildConfig.DEBUG) {
StrictMode.setThreadPolicy(
StrictMode.ThreadPolicy.Builder()
.detectAll()
.penaltyLog()
.penaltyDeath().build())
StrictMode.setVmPolicy(
StrictMode.VmPolicy.Builder()
.detectAll()
.penaltyLog()
.penaltyDeath().build())
}
super.onCreate()

// Some other code
}

我得到的错误(在super.onCreate()这一行)

D/StrictMode: StrictMode policy violation; ~duration=98 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=327711 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1263)
at libcore.io.BlockGuardOs.open(BlockGuardOs.java:182)
at libcore.io.IoBridge.open(IoBridge.java:438)
at java.io.FileInputStream.<init>(FileInputStream.java:76)
at android.graphics.Typeface.getFullFlipFont(Typeface.java:584)
at android.graphics.Typeface.getFontPathFlipFont(Typeface.java:532)
at android.graphics.Typeface.SetFlipFonts(Typeface.java:719)
at android.graphics.Typeface.SetAppTypeFace(Typeface.java:846)
at android.app.Application.onCreate(Application.java:110)
at com.mypackage.MyApplication.onCreate(MyApplication.kt:40)

这是我们应该忽略的预期错误,还是我们应该修复的错误?

最佳答案

显然错误是特定于设备的。它发生在三星 S7 上,但不是 Nexus 6P。因此,这不是我要修复的东西。因此最好的办法就是抑制它。

下面是我如何抑制它的例子。您可以将这些函数包装到一个 Util 类中。

override fun onCreate() {
turnOnStrictMode()
permitDiskReads{
super.onCreate()
}

// Some other code
}


fun turnOnStrictMode() {
if (BuildConfig.DEBUG) {
StrictMode.setThreadPolicy(
StrictMode.ThreadPolicy.Builder()
.detectAll()
.penaltyLog()
.penaltyDeath().build())
StrictMode.setVmPolicy(
StrictMode.VmPolicy.Builder()
.detectAll()
.penaltyLog()
.penaltyDeath().build())
}
}

fun permitDiskReads(func: () -> Any) : Any {
if (BuildConfig.DEBUG) {
val oldThreadPolicy = StrictMode.getThreadPolicy()
StrictMode.setThreadPolicy(
StrictMode.ThreadPolicy.Builder(oldThreadPolicy)
.permitDiskReads().build())
val anyValue = func()
StrictMode.setThreadPolicy(oldThreadPolicy)

return anyValue
} else {
return func()
}
}

引用to this了解更多详情。

关于android - StrictMode 策略违规 : android. os.StrictMode$StrictModeDiskReadViolation : policy=327711 violation=2 at Application super. onCreate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38427478/

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