Почему протоколирование StrictMode не выводится на устройство Marshmallow?
Код, вызванный из Application.onCreate()
:
private fun enableOnStrictMode() {
StrictMode.setThreadPolicy(
StrictMode
.ThreadPolicy
.Builder()
.detectAll()
.penaltyLog()
.build())
StrictMode.setVmPolicy(
StrictMode
.VmPolicy
.Builder()
.detectAll()
.penaltyLog()
.build())
}
Это прекрасно работает на устройстве Android 9.0 Pie и выдает почти десяток нарушений политики, включая нетегированные сетевые запросы и чтение с диска. Но при запуске того же кода на устройстве Marshmallow (Samsung J5 Android 6.0) StrictMode не выводит журналы, даже если кажется разумным предположить, что нарушения политики все еще происходят.
Есть ли что-то в конфигурации StrictMode, которое может привести к отсутствию вывода на Android 6.0 Marshmallow?
1 ответ
Решение
Определенные обнаружения доступны только начиная с более поздних версий API.
Например, API уровня 26 (Android O) добавлен detectUntaggedSockets
а также detectUnbufferedIo
,
Тем не мение, detectDiskReads
должен быть доступен начиная с уровня API 9.