2012-06-08 3 views
5

en cours d'exécution logcat adb dans la coquille que je vois quelque chose comme çaviolations de mode strict liste

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

  1. ce que la politique = 23 moyens?
  2. qu'est-ce que violation = 2?

je cherchais le sens de ces valeurs, mais je ne pouvais pas trouver toute la documentation violation Whit et liste politique, ou peut-être que j'interprété les résultats de ma recherche d'une mauvaise façon, mais je vais apprécier quelques explications à ce sujet

Répondre

8

ce que la politique = 23 signifie?

Vous pouvez configurer StrictMode pour vous informer de certaines choses et vous pouvez lui dire comment vous souhaitez être averti (message simple journal, exception, ...). Voir la Activation Section StrictMode dans this blog post pour référence.

La stratégie est un masque de bits qui assure le suivi de cette configuration en interne. Comme c'est un masque, il est plus intuitif de l'interpréter en binaire, qui est 10111. Ensuite, vous pouvez rechercher les bits pertinents dans le fichier source BlockGuard.java. Voici une courte copie de this site(pas sûr de la version Android qui est, il pourrait y avoir plus de choses dans les versions plus récentes, je n'ai pas la source de courant sur ma machine en ce moment):

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; 

Avec que vous pouvez dire que votre StrictMode est configuré pour vous informer des violations DISK_READ, DISK_WRITE et NETWORK via un message de journal.

et qu'est-ce que violation = 2?

Ceci est juste le type de la vialolation comme une constante int interne. Cela ne vous aide pas beaucoup puisque le nom de l'exception le donne déjà. L'auteur vient de définir une méthode getMessage() utilisée dans toutes les différentes exceptions StrictMode sous-classées. Juste pour référence, ces constantes sont définies dans StrictMode.java.

+1

Comme pour Android aujourd'hui, la liste des politiques est dans le 'StrictMode.java' [code source] (https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android /os/StrictMode.java). Actuellement, ils ne sont pas affichés dans la documentation. Notez que la plupart des noms de constante reflètent maintenant les noms de méthodes correspondants. –

Questions connexes