Почему журнал 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?


person Ollie C    schedule 16.10.2018    source источник
comment
Какое именно нарушение вы упустили? Если это немаркированные нарушения сокетов и небуферизованные нарушения ввода-вывода, то это, вероятно, потому, что они были добавлены на уровне API 26.   -  person Michael    schedule 16.10.2018
comment
@Майкл Ах да, ты прав. Добавьте как ответ, и я отмечу как ответ. Основное, что я ожидал увидеть, это нарушения чтения с диска, которые, как ни странно, появились только с API 28: developer.android.com/reference/android/os/strictmode/   -  person Ollie C    schedule 16.10.2018
comment
Это может быть связано с рефакторингом кода. В Marshmallow должно быть доступно обнаружение нарушений чтения с диска (но не обнаружение небуферизованного чтения/записи на диск).   -  person Michael    schedule 16.10.2018


Ответы (1)


Некоторые обнаружения доступны только начиная с более поздних версий API.

Например, уровень API 26 (Android O) добавлен detectUntaggedSockets и detectUnbufferedIo.

Однако detectDiskReads должен быть доступен начиная с уровня API. 9.

person Michael    schedule 16.10.2018