如何在Android上从内存中完全清除位图?

问题描述

我只有一个位图,可用于分配给静态变量。我没有将此设置为任何imageview。将其分配给静态变量后,我想通过键入bitmap.recycle()将其从内存中删除。当我只使用bitmap.recycle()行时,我没有收到错误,但是当我尝试切换到另一个页面时,却收到了错误

代码没有错误

StaticVeriables.getScannedFromgallery=bitmap;
bitmap.recycle();
//Intent gallery1 = new Intent(MainActivity.this,Editimage.class);
//gallery1.putExtra("isgallery",true);
//startActivity(gallery1);
//finish();

代码错误

StaticVeriables.getScannedFromgallery=bitmap;
bitmap.recycle();
Intent gallery1 = new Intent(MainActivity.this,Editimage.class);
gallery1.putExtra("isgallery",true);
startActivity(gallery1);
finish();

解决方法

我解决了这个问题。这与切换到另一个活动无关。由于我在前一行中将位图分配给了静态变量,因此当我编写bitmap.recycle()时,由于该位图是一个引用静态变量,并且在其他类中使用了此静态变量,因此我得到了一个错误。通过将位图变量复制到静态变量中,我解决了这个问题。在那:

//I solved my problem with this line
StaticVeriables.getScannedFromGallery=bitmap.copy(bitmap.getConfig(),true);
/*Whe should not do this
StaticVeriables.getScannedFromGallery=bitmap;*/
bitmap.recycle();
Intent gallery1 = new Intent(MainActivity.this,EditImage.class);
gallery1.putExtra("isGallery",true);
startActivity(gallery1);
finish();

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...