我的小应用在第五或第六次屏幕旋转后总是崩溃。定义了两个主要布局,一个用于横屏,一个用于竖屏。整天寻找内存泄漏问题后,我发现了问题所在:我将一张JPG作为Main-Activity的背景定义。将JPG更改为PNG后,内存问题得到解决。
背景被定义为drawable,并在main.xml中定义。
当我在2.2(模拟器)下测试应用时,没有出现问题,但在2.3.1(也是模拟器)下,应用崩溃了。
有人能重现这个问题吗?
现在我将我的应用程序减少到以下代码:
背景被定义为drawable,并在main.xml中定义。
当我在2.2(模拟器)下测试应用时,没有出现问题,但在2.3.1(也是模拟器)下,应用崩溃了。
有人能重现这个问题吗?
现在我将我的应用程序减少到以下代码:
package at.memtest;
import android.app.Activity;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.widget.LinearLayout;
public class MemTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
protected void onDestroy() {
recycleImages();
super.onDestroy();
}
@Override
protected void onPause() {
recycleImages();
super.onPause();
}
private void recycleImages() {
final LinearLayout theView = (LinearLayout) findViewById(R.id.main_layout);
if (theView != null) {
final BitmapDrawable background = (BitmapDrawable) theView.getBackground();
if (background != null) {
background.getBitmap().recycle();
}
}
}
}
现在,内存保持不变......
你能想象这是为了避免内存泄漏吗?
正如我上面所说的 - 我用作背景的图像是一个大小约为220K的PNG。