2017-08-05 6 views
0

Dans le code source de Handler.java, je traverse en dessous de segment de codeFIND_POTENTIAL_LEAKS Android de gestionnaire

public Handler(Callback callback, boolean async) { 
    if (FIND_POTENTIAL_LEAKS) { 
     final Class<? extends Handler> klass = getClass(); 
     if ((klass.isAnonymousClass() || klass.isMemberClass() || klass.isLocalClass()) && 
       (klass.getModifiers() & Modifier.STATIC) == 0) { 
      Log.w(TAG, "The following Handler class should be static or leaks might occur: " + 
       klass.getCanonicalName()); 
     } 
    } 

} 

De code, je peux voir FIND_POTENTIAL_LEAKS est utilisé pour trouver leaks.However potentiel le dépôt est private et toujours false.

Alors, quand sera-t-il vraiment utilisé?

EDIT

De Murat, la réflexion semble fonctionner, mais pourquoi Android définir la valeur par défaut true?

Répondre

0

Il y a un commentaire dans la documentation pour ce domaine:

public class Handler { 
65  /* 
66  * Set this flag to true to detect anonymous, local or member classes 
67  * that extend this Handler class and that are not static. These kind 
68  * of classes can potentially create leaks. 
69  */ 
70  private static final boolean FIND_POTENTIAL_LEAKS = false; 

Je suppose que ça prépare à true via des réflexions par exemple décrit ici Change private static final field using Java reflection

+0

Je suppose que oui.Mais il semble stupide, LOL. – JianxinLi

+0

Tout ce que vous ne comprenez pas n'est pas stupide. – Ridcully

+0

Alors, pourquoi pas par défaut 'true'? @Ridcully – JianxinLi