Подтвердить что ты не робот

MainActivity просочилась с помощью утечки

Я использую Leak Canary для отслеживания утечки памяти, и он говорит, что было пропущено следующее:

static hk.o 
references ht.a 
leaks MainActivity instance

что такое hk.o и ht.a? Я не имею их в своей MainActivity.

4b9b3361

Ответ 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())