以下是一些新手内存管理的观察,我希望听取有经验的意见。
在XML布局中设置android:background="@drawable/xyz"似乎会导致我的应用程序出现内存泄漏。相应的活动会不断堆叠,直到我收到OOM错误。如果旋转设备方向,则尤其如此。
然而,如果我使用setBackgoundResource()加载相同的资源,然后清除回调并将背景引用设置为null,就不会有任何泄漏。
也就是说,在onCreate()中首先这样做。
这大概是正确的,还是有重要的东西我没有理解吗?
在XML布局中设置android:background="@drawable/xyz"似乎会导致我的应用程序出现内存泄漏。相应的活动会不断堆叠,直到我收到OOM错误。如果旋转设备方向,则尤其如此。
然而,如果我使用setBackgoundResource()加载相同的资源,然后清除回调并将背景引用设置为null,就不会有任何泄漏。
也就是说,在onCreate()中首先这样做。
mMainLayout.setBackgroundResource(R.drawable.background_general_android);
然后在onDestroy()中执行
mMainLayout.getBackground().setCallback(null);
mMainLayout.setBackgroundDrawable(null);
这大概是正确的,还是有重要的东西我没有理解吗?