2014-12-23 18 views
0

該活動顯示從互聯網加載的位圖,當我滑動ImageView時,會發生另一個位圖。我將位圖設置爲ImageView,並且在回收它之後,有時會出現錯誤已經發生。 代碼:如何回收運行多線程的位圖

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

它運行多線程,我不能把Bitmpa的操作回收提前setImageBitmap的。 我該怎麼辦?

回答

0

基本上,你不能回收你當前在ImageView中使用的位圖。 如果你希望交換的位圖在ImageView的話,我會做這樣的:

我會保留對位圖引用(例如mLoadedBitmap),當你下載一個又一個,你做這樣的事情:

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

我知道了,謝謝,先生。 –

+0

如果它對您的問題有幫助,請確保接受答案。 –

+0

我應該如何接受它?我是一名新學員。當我投票選出你的答案時,它顯示需要15點聲望。 –

0

您可以編寫一個多線程應用程序,但可以從主線程執行所有UI更新。