MainActivity fuite à l'aide d'un filtre à eau

J'utilise Leak Canary pour suivre la fuite de mémoire et il dit que les éléments suivants ont été divulgués:

static hk.o references ht.a leaks MainActivity instance 

Quel est le hk.o et ht.a ? Je ne les ai pas dans ma MainActivity.

  • SMS Manager pour les téléphones Dual Sim?
  • Android: comment supprimer le fichier d'image interne
  • Comment détecter un fabricant et un modèle de périphérique mobile par programme dans Android?
  • L'exportation d'APK depuis eclipse (ADT) se bloque en silence
  • Android Webview Anchor Link (Jump link) ne fonctionne pas
  • Ajouter un objet à ArrayList à l'index spécifié
  • Service Android startService () et bindService ()
  • Android - comment charger bitmap depuis Res sans redimensionner?
  • Existe-t-il un moyen d'ajouter une icône à une Snackbar?
  • Comment réparer: un périphérique d'erreur introuvable avec ADB.exe
  • EXCEPTION FATALE: java.lang.NoClassDefFoundError: android.support.v7.appcompat.R $ disposition
  • Comment créer une conception de matériau comme une barre de défilement personnalisée avec des chiffres et des bulles d'alphabets en vue récente
  • 3 Solutions collect form web for “MainActivity fuite à l'aide d'un filtre à eau”

    Ces cours sont des classes de bibliothèques tierces. Vous pouvez prendre votre instance MainActivity comme un argument et passer dans quelle instance de classe appartient à la bibliothèque. Vous pouvez utiliser ApplicationContext comme argument s'il n'est pas nécessaire de passer en Activité.

    Je pense que ceux-ci sont protégés (renommé des classes avec des noms aléatoires pour empêcher l'ingénierie inverse) de l'une des dépendances. J'ai vu cela lorsque des choses liées à Google Sign In sont utilisées dans l'application.

    Les classes de Google Services sont généralement Pro Guarded.

    J'espère que ça aide.

    J'ai suivi ce problème, et le coupable est Google Ads. Les classes que vous avez mentionnées proviennent en fait de la bibliothèque com.google.ads.interactivemedia.v3:interactivemedia , qui est incluse dans les play-services-ads .

    La référence à l'activité a été définie via le constructeur de PublisherAdView , où j'ai dépassé le contexte de l'activité. Probablement, vous utilisez également une vue publicitaire similaire dans votre application.

    Comme solution de contournement, je passe maintenant le contexte de l'application à la vue de l'annonce, ce qui semble avoir résolu la fuite:

     new PublisherAdView(getContext().getApplicationContext()) 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.