xml泄漏内存中的Android位图?

per*_*rza 5 resources android memory-leaks bitmap drawable

这里有一些新手记忆管理观察,我希望听到有经验的意见.

似乎在xml布局中设置android:backgound ="@ drawable/xyz"会导致我的应用程序内存丢失.各个活动一直在堆积,直到我收到OOM错误.如果我旋转设备方向,则尤其如此.

但是,如果我使用setBackgoundResource()加载相同的资源,然后清除回调并将后台引用设置为null,则无任何泄漏.

也就是说,首先在onCreate()

    mMainLayout.setBackgroundResource(R.drawable.background_general_android);
Run Code Online (Sandbox Code Playgroud)

然后在onDestroy()

mMainLayout.getBackground().setCallback(null);
mMainLayout.setBackgroundDrawable(null);
Run Code Online (Sandbox Code Playgroud)

这是大致正确的,还是我错过了必不可少的东西?

Rom*_*Guy 1

例如,只有当您在静态缓存中保留可绘制对象的副本时,才会发生这种情况。您也可能会泄漏您的活动,并将可绘制对象设置为 null 只是将问题隐藏得更久一点。您应该使用 MAT 这样的工具来检查堆的内容并找出发生了什么。