我正在开发我的第一个Android应用程序,它有内存泄漏。我已经使用过像MAT这样的工具,但我仍然无法找到漏洞的来源。
一些上下文和情况:我的应用程序中有很多活动。当我反复从活动A转到活动B然后再回到活动A时,使用的内存将不断增加。对于我尝试过的所有活动都会发生这种情况。
通过MAT泄漏嫌疑分析(见第一个图片链接),有大量的“android.app.ActivityThread $ ActivityClientRecord”,我不知道它是什么。
我对编程非常陌生,我已经研究了这个问题好几天,阅读了几十篇Stack Overflow帖子,但仍然不知道泄密的来源。
以下是MAT分析结果的几个屏幕上限:
几乎所有活动都共享一些片段
DayTimeFragment(由所有活动共享)
StatusBarFragment(由所有活动共享)
BackButtonFragment(由某些活动共享)
ButtonFragment(由某些活动共享)
答案 0 :(得分:1)
我没有查看您的数据,所以我无法肯定地说,但您的错误消息与这些报告类似:
我收到来自android.app.ActivityThread$ActivityClientRecord
的泄漏的LeakCanary日志消息,并通过禁用here所述的所有活动之间的转换来解决它。
我不知道是否有其他解决方法,也不知道这个特定的解决方法与哪个版本兼容,但我在overridePendingTransition(0, 0);
(静态实用工具方法)的任何调用之后立即使用startActivity
,并且在每个活动的{{}上再次使用onPause
1}}(在基类中)。