2012-06-08 17 views
5

esecuzione logcat adb nella shell vedo qualcosa di simileviolazioni modalità rigorosa

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

  1. ciò che la politica = 23 significa?
  2. cos'è la violazione = 2?

stavo cercando i significati di questi valori, ma non riuscivo a trovare alcuna documentazione Pentecoste violazione e politica di lista, o forse ho interpretato i risultati dalla mia ricerca in malo modo, ma io apprezzo qualche spiegazione su questo

risposta

8

cosa significa la politica = 23?

È possibile configurare StrictMode per avvisare di certe cose e si può dire che come si desidera ricevere la notifica (semplice messaggio di log, eccezione, ...). Vedere la sezione Abilitazione di StrictMode in this blog post come riferimento.

Policy è una maschera di bit che tiene traccia di tale configurazione internamente. Dal momento che si tratta di una maschera, è più intuitivo interpretarlo in formato binario, ovvero 10111. Quindi è possibile cercare i bit rilevanti all'interno del file sorgente BlockGuard.java. Ecco una breve copia da this site(non so cosa Android versione che è, ci potrebbero essere più cose in versioni più recenti, non ho il generatore di corrente sulla mia macchina in questo momento):

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; 

Con che è possibile indicare che StrictMode è configurato per notificare le violazioni DISK_READ, DISK_WRITE e NETWORK tramite un messaggio di registro.

e cos'è la violazione = 2?

Questa ist solo il tipo di vialolation alcuni int costante interna. Non ti aiuta molto dal momento che il nome dell'eccezione lo fornisce già. L'autore ha appena definito un metodo getMessage() utilizzato in tutte le diverse eccezioni StrictMode sottoclasse. Solo per riferimento, queste costanti sono definite all'interno di StrictMode.java.

+1

Per quanto riguarda Android oggi, l'elenco delle politiche si trova nel 'codice sorgente StrictMode.java' (https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android /os/StrictMode.java). Attualmente, non sono mostrati nella documentazione. Si noti che la maggior parte dei nomi costanti ora riflettono i nomi dei metodi corrispondenti. –