android - ImageView.setImageBitmap() 是否回收之前设置的位图?

标签 android android-bitmap

假设我的代码类似于下面的代码:

protected void onCreate(Bundle bundle){

    this.imageView = (ImageView) contentView.findViewById(R.id.imageView);

    this.setFirstBitmap();
    this.setSecondBitmap();
}

private setFirstBitmap(){
    Bitmap bitmap1 = BitmapFactory.decodeFile(bitmapFile1);
    imageView.setImageBitmap(bitmap1);
}

private setSecondBitmap(){
    Bitmap bitmap2 = BitmapFactory.decodeFile(bitmapFile2);
    imageView.setImageBitmap(bitmap2);
}

在这种情况下,imageView 会回收 bitmap1 还是我必须在设置 bitmap2 之前回收?

最佳答案

ImageView 不会自动释放位图

正如@Vipul 所解释的那样

必须通过调用 bitmap.recycle() 释放位图引用

当你想将另一个位图分配给 ImageView 时,调用

((BitmapDrawable)imageView.getDrawable()).getBitmap().recycle();

看看this

关于android - ImageView.setImageBitmap() 是否回收之前设置的位图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22448380/

相关文章:

java - 在 java 中的 Debug模式和 Release模式之间切换代码 - android

android - 使用 TextView 自动调整线性布局的大小

安卓工作室 : App works on API 29 but crash on API 26

java - BitmapFactory.decodeFile 返回 null

android - Android 中相机图像返回缩略图

android - 我需要将图像文件发送到 Clarifai 服务器进行图像分类,但我一直收到 "skipped frames, application doing too much work"

java - 在 Android 首选项中禁用部分/所有单选按钮

java - 静态字段 view.GONE 应该以静态方式访问吗?

android - 使用 InputStream 将 Intent 发送到媒体播放器应用程序

android - 错误通知 : The given region must intersect with the Bitmap's dimensions