【问题标题】:Android App Memory Leak - android.app.ActivityThread$ActivityClientRecordAndroid 应用程序内存泄漏 - android.app.ActivityThread$ActivityClientRecord
【发布时间】:2016-07-25 11:42:03
【问题描述】:

我正在开发我的第一个 Android 应用程序,但它存在内存泄漏。我已经用过 MAT 之类的工具,但我仍然无法找出泄漏的来源。

一些上下文和情况:我的应用中有很多活动。当我反复从 Activity A 到 Activity B 再回到 Activity 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(由某些活动共享)

【问题讨论】:

标签: java android memory-leaks


【解决方案1】:

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

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

我不知道是否有其他变通办法,也不知道该特定变通办法与哪些版本兼容,但我在任何startActivity(静态实用程序方法)调用后立即使用overridePendingTransition(0, 0);,并再次在每个活动的onPause(在基类)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 2016-03-28
    • 2010-11-27
    相关资源
    最近更新 更多