BitmapFactory导致应用程序在方向更改时崩溃

时间:2011-08-30 16:06:35

标签: android bitmapfactory

我正在编写一个应用程序,它将一个String存储在SQLite数据库中,该数据库代表/ sdcard /上图像的文件路径。我在onCreate()我的一项活动中有这段代码:

final Intent receivedIntent = getIntent();

String imageStr = receivedIntent.getExtras().getString("picture");
ImageView imageView = (ImageView) findViewById(R.id.pPicture);
File file = new File (imageStr);
if (file.exists()) {
   Bitmap bitmap = BitmapFactory.decodeFile(imageStr);
   imageView.setImageBitmap(bitmap);
}

代码在我第一次加载活动时有效,但是当我在屏幕方向之间切换时,它会崩溃我的应用程序。关于我能做些什么来解决这个问题的任何想法?我希望能够继续在方向之间切换,但我不需要每次刷新。

另外,我有些新意,所以请尽量保持你的答案不要太复杂。

请注意,该文件在所有情况下都存在。

1 个答案:

答案 0 :(得分:3)

我认为您的应用因OutOfMemoryException而崩溃。尝试在onDestroy()中回收位图:

@Override
public void onDestroy() {
    super.onDestroy();

    ImageView imageView = (ImageView) findViewById(R.id.pPicture);
    Drawable drawable = imageView.getDrawable();
    imageView.setImageDrawable(null);

    if (drawable instanceof BitmapDrawable) {
        Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
        bitmap.recycle();
        bitmap = null;
    }
}