Android App Memory Leak - android.app.ActivityThread $ ActivityClientRecord

时间:2016-07-25 11:42:03

标签: java android memory-leaks

我正在开发我的第一个Android应用程序,它有内存泄漏。我已经使用过像MAT这样的工具,但我仍然无法找到漏洞的来源。

一些上下文和情况:我的应用程序中有很多活动。当我反复从活动A转到活动B然后再回到活动A时,使用的内存将不断增加。对于我尝试过的所有活动都会发生这种情况。

通过MAT泄漏嫌疑分析(见第一个图片链接),有大量的“android.app.ActivityThread $ ActivityClientRecord”,我不知道它是什么。

我对编程非常陌生,我已经研究了这个问题好几天,阅读了几十篇Stack Overflow帖子,但仍然不知道泄密的来源。

以下是MAT分析结果的几个屏幕上限:

MAT leak suspect report

Comparison of MAT Histogram of 2 different time points (after filtering out objects which are not coded by me)

几乎所有活动都共享一些片段

  • DayTimeFragment(由所有活动共享)

  • StatusBarFragment(由所有活动共享)

  • BackButtonFragment(由某些活动共享)

  • ButtonFragment(由某些活动共享)

1 个答案:

答案 0 :(得分:1)

我没有查看您的数据,所以我无法肯定地说,但您的错误消息与这些报告类似:

我收到来自android.app.ActivityThread$ActivityClientRecord的泄漏的LeakCanary日志消息,并通过禁用here所述的所有活动之间的转换来解决它。

我不知道是否有其他解决方法,也不知道这个特定的解决方法与哪个版本兼容,但我在overridePendingTransition(0, 0);(静态实用工具方法)的任何调用之后立即使用startActivity,并且在每个活动的{{}上再次使用onPause 1}}(在基类中)。