MainActivity просочилась с помощью утечки
Я использую Leak Canary для отслеживания утечки памяти, и он говорит, что было пропущено следующее:
static hk.o
references ht.a
leaks MainActivity instance
что такое hk.o
и ht.a
? Я не имею их в своей MainActivity.
Ответы
Ответ 1
Я думаю, что они защищены (переименованы классы со случайными именами для предотвращения обратного проектирования) любой из зависимостей. Я видел это, когда в приложении используется материал, похожий на Google Sign In.
Классы Google Services обычно являются Pro Guarded.
Надеюсь, это поможет.
Ответ 2
Эти классы являются сторонними библиотечными классами. Вы можете взять экземпляр MainActivity в качестве аргумента и передать экземпляр класса в библиотеку. Вы можете использовать ApplicationContext в качестве аргумента, если нет необходимости проходить в Activity.
Ответ 3
Я проследил это, и виновником является Google Ads.
Вы упомянули классы из библиотеки com.google.ads.interactivemedia.v3:interactivemedia
, которая включена в play-services-ads
.
Ссылка на активность была задана с помощью конструктора PublisherAdView
, где я передал контекст активности. Вероятно, вы также используете аналогичное объявление в своем приложении.
В качестве обходного пути я теперь передаю контекст приложения в представление объявления, которое, похоже, решило утечку:
new PublisherAdView(getContext().getApplicationContext())