Android setImageURI内存不足错误

Imp*_*ver 7 memory android image

我有一个非常小的活动,必须显示一个图像.

如果图像不是很小(例如1.12 Mb 2560x1920),则在更改屏幕方向上会产生内存不足.我试过getDrawable.setCallback(null)但没有运气.

我哪里错了?

public class Fullscreen extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    System.gc();
    setContentView(R.layout.fullscreen);
    ImageView imageView = (ImageView) findViewById(R.id.full_screen_image);
    long imageId = 2;
    imageView.setImageURI(Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "" + imageId));
    }
}
Run Code Online (Sandbox Code Playgroud)

gin*_*ngo 11

尝试将此添加到您的onDestroy方法:

ImageView imageView = (ImageView) findViewById(R.id.full_screen_image);
BitmapDrawable bd = (BitmapDrawable)imageView.getDrawable();
bd.getBitmap().recycle();
imageView.setImageBitmap(null);
Run Code Online (Sandbox Code Playgroud)

它将回收ImageView中使用的位图.

  • 伟大的帖子,但你可以添加强制性`if!= null`检查bd :) (3认同)

Sam*_*muh 4

消耗更少的内存并对图片进行下采样/调整大小(请参阅 BitmapOptions#inSampleSize 的文档)。