亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么handleMessage可以直接引用ImageLoader實例的成員變量而不發生錯亂?

為什么總覺得這里怪怪的,在handleMessage中直接用ImageLoader實例的成員變量mImageView和mUrl,假如要調用適配器的getView方法6次,那么就要另外開啟6個線程,每個線程都會sendMessage一次,但是誰先誰后發送message是不定的,而在先發送的message一定會先被handleMessage所處理,但是,在主線程中的handleMessage在處理message的時候會不會用用到不是與之對應的ImageLoader實例的成員變量mImageView和mUrl呢?

正在回答

3 回答

今天又看了一下本次課程,發現handleMessage在處理message時處理的mImageView和mUrl確實不對應,作者用mImageView.getTag().equals(mUrl)的方式解決了該問題,但為什么出現這個問題并沒有說清楚,求高人指導!

0 回復 有任何疑惑可以回復我~
#1

xiaoc024

handleMessage在處理message時處理的mImageView和mUrl不對應是不可避免的(同時使用ConvertView和異步機制),只有當處理到對應的url時才更新ui,所以加了判斷語句。
2016-05-30 回復 有任何疑惑可以回復我~

每調用一次?getView 方法就會新建一個?ImageLoader 對象,每個ImageLoader?對象內部都有自己的成員變量mHandler,mImageView,mUrl,所以不會出現你說的錯亂的情況。

0 回復 有任何疑惑可以回復我~

你說的“但是誰先誰后發送message是不定的”這個我不太確定,不敢亂解釋,但是即使“用到不是與之對應的ImageLoader實例的成員變量mImageView和mUrl”,position和imageview、url是對應的,所以handler總會把圖像加載到這個圖片對應的position和imageview上

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Android必學-異步加載
  • 參與學習       50616    人
  • 解答問題       333    個

了解Android中的異步加載處理方法,這是面試問的最多的知識點

進入課程

為什么handleMessage可以直接引用ImageLoader實例的成員變量而不發生錯亂?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號