【问题标题】:Memory Leak when refresh Activity刷新Activity时内存泄漏
【发布时间】:2016-01-27 04:01:19
【问题描述】:

我有问题!

对于刷新活动,我使用以下代码:

Intent i=getIntent();
finish();
startActivity(i);

问题是内存增加,多次运行此操作,应用程序因OutOfMemory而崩溃。

我该如何解决这个问题?有什么解决办法吗?

请帮帮我

This is Logcat

【问题讨论】:

  • 也从 logcat 发布确切的异常。
  • 我已经发布了 Logcat
  • 您是否在 MapFragment 的任何地方或 onCreateView 内部使用任何 jpeg 图像

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


【解决方案1】:

新的答案,但也许有人会读到这个...... 重新创建活动时,终止所有活动的引用。在您调用 finish() 方法之后,可能某些对象仍然处于活动状态并引用它。 Context 也是最容易泄漏的类之一,请明智地使用它。

我个人在活动上调用 recreate 然后覆盖它...

    override fun recreate() {
    finish()
    viewMvc.cancelTimer()
    viewMvc.unregisterListener(this)
    startActivity(intent)
}

viewMvc 这里是我的视图与活动分开

愉快的编码

【讨论】:

    【解决方案2】:

    实际上,我认为这是因为您的代码没有优化以避免内存泄漏。以下是一些避免它的提示:

    不要保留对上下文活动的长期引用(对活动的引用应该与活动本身具有相同的生命周期)

    尝试使用上下文应用程序而不是上下文活动

    如果您无法控制,请避免在活动中使用非静态内部类 它们的生命周期,使用静态内部类并进行弱引用 到里面的活动。这个问题的解决方案是使用静态 内部类具有对外部类的弱引用,如在 例如 ViewRoot 及其内部类 垃圾收集器不是防止内存泄漏的保险

    阅读本文了解更多详情:Avoiding memory leaks

    【讨论】:

      【解决方案3】:

      也许Intent 对Activity 有某种类型的引用,你为什么不试试this。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-07
        • 2018-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-18
        相关资源
        最近更新 更多