在imageview.setImageBitmap(Bitmap bmp)后回收bmp,会出现崩溃的现象,原因是bmp在使用时突然被内存回收了。为了避免这种情况,同时保证重复操作时先前设置的bitmap被内存回收,采用map存放bitmap的方式。第一次操作只往map中存放bitmap,第二次操作将之前存在的bitmap回收,再往map放置当前的bitmap
private void handleBitmapCache(Bitmap bitmap){
if(bitmapCache.size()==0){
//存放当前的bitmap
bitmapCache.put(KEY, bitmap);
return;
}
if(!bitmapCache.get(KEY).isRecycled()){
//将bitmap回收
bitmapCache.get(KEY).recycle();
//存放当前的bitmap
bitmapCache.put(KEY, bitmap);
}
}