以下是我想要的一些新手记忆管理观察 听取经验丰富的意见。
似乎在xml中设置android:backgound =“@ drawable / xyz” 布局导致我的应用程序内存丢失。各自的活动保持不变 堆叠直到我收到OOM错误。如果我旋转,尤其如此 设备方向。
但是,如果我使用setBackgoundResource()加载相同的资源,然后清除 回调并将背景引用设置为null,没有任何泄漏。
即onCreate()
中的第一个 mMainLayout.setBackgroundResource(R.drawable.background_general_android);
然后在onDestroy()
mMainLayout.getBackground().setCallback(null);
mMainLayout.setBackgroundDrawable(null);
这大概是正确的,还是我遗漏了一些必要的东西?
答案 0 :(得分:1)
只有在例如静态缓存中保留drawable的副本时才会发生这种情况。您可能还会泄漏您的活动并将drawable设置为null,只需将问题隐藏一段时间。您应该使用MAT之类的工具来检查堆的内容并找出正在发生的事情。