Список нарушений строгих правил

Запуск adb logcat в оболочке, я вижу что-то вроде этого

StrictMode policy violation; ~duration=337 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=23 violation=2

  1. Что означает политика = 23?
  2. Что такое нарушение = 2?

Я искал значения этих значений, но я не мог найти документацию с описанием нарушения и списком политик, или, может быть, я плохо интерпретировал результаты моего поиска, но я буду признателен за некоторые объяснения этого

Что означает политика = 23?

Вы можете настроить StrictMode, чтобы уведомить вас о некоторых вещах, и вы можете сообщить ему, как вы хотите получать уведомления (простое сообщение журнала, исключение, …) . См. Раздел Включение StrictMode в этом сообщении блога для справки.

Политика – это битовая маска, которая отслеживает эту конфигурацию внутри себя. Поскольку это маска, более интуитивно понятно, чтобы интерпретировать ее в двоичном формате, то есть 10111. Затем вы можете искать соответствующие биты в исходном файле BlockGuard.java . Вот короткая копия с этого сайта (не знаю, какая версия для Android, возможно, в новых версиях может быть больше, у меня нет текущего источника на моей машине прямо сейчас) :

 public static final int DISALLOW_DISK_WRITE = 0x01; public static final int DISALLOW_DISK_READ = 0x02; public static final int DISALLOW_NETWORK = 0x04; public static final int PASS_RESTRICTIONS_VIA_RPC = 0x08; public static final int PENALTY_LOG = 0x10; public static final int PENALTY_DIALOG = 0x20; public static final int PENALTY_DEATH = 0x40; 

С этим вы можете сказать, что ваш StrictMode настроен для уведомления вас о нарушениях DISK_READ, DISK_WRITE и NETWORK через сообщение журнала.

И что такое нарушение = 2?

Это всего лишь тип vialolation, поскольку некоторый внутренний int постоянный. Это не поможет вам, так как имя исключения дает это уже. Автор только что определил один метод getMessage() который используется во всех различных исключениях StrictMode подкласса. Просто для справки, эти константы определены в StrictMode.java .