如何回收运行多线程的位图

时间:2014-12-23 10:25:03

标签: android multithreading bitmap

活动显示从互联网加载的位图,当我滑动ImageView时,会发生另一个位图。我将位图设置为ImageView,在回收后,有时会发生错误。 代码:

mImageView.setImageBitmap(loadedBitmap);
if(loadedBitmap!=null && !loadedBitmap.isRecycled()){
   loadedBitmap.recycle();
   loadedBitmap=null;
}

它运行多线程,我不能把Bitmpa的操作放在setImageBitmap之前。 我该怎么办?

2 个答案:

答案 0 :(得分:0)

您可以编写多线程应用程序,但可以从主线程执行所有UI更新。

答案 1 :(得分:0)

基本上,您无法回收当前在ImageView中使用的位图。 如果你想在ImageView中交换位图,那么我会这样做:

我会保留对Bitmap的引用(例如mLoadedBitmap),当你下载另一个时,你会做这样的事情:

final Bitmap oldBitmap = mLoadedBitmap;
mLoadedBitmap = downloadedBitmap;
mImageView.setImageBitmap(mLoadedBitmap);
if(oldBitmap!=null && !oldBitmap.isRecycled()){
    oldBitmap.recycle();
}