MainActivity泄漏,使用LeakCanary检测

17

我正在使用LeakCanary来跟踪内存泄漏,并且它显示以下内容已经被泄漏:

static hk.o 
references ht.a 
leaks MainActivity instance

什么是 hk.oht.a?我在我的 MainActivity 中找不到它们。


我有相同的问题,可能与Google Play服务库有关。 - meh
1
那些类名已经被混淆,可能是任何东西。在泄漏菜单中有一个“共享信息”按钮,请在此处发布整个输出。 - Eugen Pechanec
3个回答

3

我认为这些是任何一个依赖项的混淆保护(使用随机名称重命名类以防止反向工程)。当应用程序中使用类似Google Sign In的相关内容时,我曾经见过这种情况。

一般来说,Google服务的类都是经过混淆保护的。

希望这能帮到你。


3

这些类是第三方库类。您可以将MainActivity实例作为参数,并传递属于库的哪个类的实例。如果不需要传递Activity,您可以使用ApplicationContext作为参数。


1
我追踪了一下,罪魁祸首是Google广告。你提到的类实际上来自库com.google.ads.interactivemedia.v3:interactivemedia,该库已包含在play-services-ads中。
对活动的引用是通过PublisherAdView的构造函数设置的,我传递了活动上下文。可能你也在你的应用程序中使用了类似的广告视图。
作为解决方法,我现在将应用程序上下文传递给广告视图,这似乎已经解决了泄漏问题:
new PublisherAdView(getContext().getApplicationContext())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接