我的小应用程序在第5或第6次屏幕旋转后总是崩溃。定义了两个主要布局,一个用于纵向布局,用于纵向布局。在花了一整天寻找内存泄漏之后我发现了问题:我将JPG定义为Main-Activity的背景。将JPG更改为PNG后,内存问题得以解决。
后台定义为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。
答案 0 :(得分:0)
您确定文件格式是问题吗?试试这个:http://android-developers.blogspot.co.uk/2009/01/avoiding-memory-leaks.html
使用PNG可能只是你的内存不足。
答案 1 :(得分:0)
我遇到了同样的问题 而不是.jpg,我用.png,解决了这个问题。
答案 2 :(得分:0)
我在使用jpg背景图片时遇到问题,这使得我的应用程序在某些设备上也非常慢。虽然使用png并没有解决它。我认为它可能与我为图像选择的高压缩有关,以节省空间,这可能导致在运行时更多的努力进行解压缩。