【问题标题】:Android - release memory on calling finish() in activityAndroid - 在活动中调用完成()时释放内存
【发布时间】:2016-05-27 06:04:58
【问题描述】:

在调用 finish() 关闭 Activity 时,Activity 中的对象不会从 Android 中的内存中释放

案例: Activity A 打开 Activity B 并在 Activity B 的 finish() 上,Activity B 关闭,但内存仍然被占用,在从 Activity A 再次调用 Activity B 时,Android 分配更多内存最终导致内存不足错误。

解决方法: 在Activity B的finish()之后使用System.exit(0)会释放内存,但是在返回之前的Activity A时会显示一个空白屏幕。我觉得这不是理想的方式。

感谢有关解决此问题的帮助,以便在 Activity 的 finish() 上释放内存。

【问题讨论】:

  • 在不知道 A 和 B 实际做什么的情况下,无法回答这个问题。显示源代码。
  • 这里好像有内存泄漏。

标签: android android-activity memory out-of-memory activity-finish


【解决方案1】:

当在一个活动上调用 finish() 时,会执行 onDestroy() 方法。因此,覆盖该方法并将所有强 ref 变量设置为空,如位图、连接等。 请记住 onDestroy() 不是析构函数。所以你必须自己做以避免OOM错误。

还要查看过度绘制调试器以避免在像素上过度绘制。

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 2017-01-08
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多