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.

  • Emulator Android: Impossible de démarrer la webcam pour capturer une image dans un émulateur
  • Vue en liste avec des groupes dans Android
  • Inverser la direction d'un LinearLayout
  • L'aperçu de l'enregistreur de caméra personnalisé s'allonge lorsque MediaRecorder.start () est appelé
  • Liste tous les fichiers de tout le dossier dans une seule liste
  • Maintenir la position de défilement de GridView à travers la rotation de l'écran
  • Android Room: chaque variable de liaison dans la requête doit avoir une méthode correspondante
  • Quelle bibliothèque WebSocket à utiliser dans l'application Android?
  • Problème de lecture d'une chanson dans Google Music player
  • Comment importer Android Studio Project de Git
  • ProGuard n'a pas compilé avec Joda Time utilisé dans Windows
  • Menu déroulant déroulant sur le clavier en mode autocomplé
  • 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.