課程
/移動開發
/Android
/Android-仿微信圖片選擇器
沒理解 為什么要將 那3個變量 ,打包成一個Bean對象。
2016-01-08
源自:Android-仿微信圖片選擇器 3-1
正在回答
在顯示GridView的時候,適配器的getView方法會被多次調用,因此loadImage也會被多次調用,而每次調用loadImage都會通過refreashBitmap方法來mUIHandler.sendMessage,而Task中refreashBitmap會新的線程中去執行,因此也許會有多個線程并發執行,也許當執行某一個loadImage的時候,正好mUIHandler的handleMessage也剛好在處理一個非該loadImage而sendMessage的message(注意:mUIHandler的handleMessage是在主線程中),如果不用ImgBeanHolder,就可能導致用msg.obj來取bitmap與剛才說的loadImage的參數的path和imageView發生錯亂
在mUIHandler中的handleMessage中不能直接用msg.obj來取bitmap(前提是在sendMessage的時候只在msg.obj中綁定bitmap)然后根據loadImage方法參數path和imageView來設置圖片,因為mUIHandler中的handleMessage在執行的時候所獲得的bitmap不一定是當前的(與之對應的)path和imageView(也就是當前loadImage方法的參數path和imageView,因為mUIHandler是在loadImage中初始化的,所以mUIHandler的handleMessage可以直接調用loadImage方法的參數path和imageView),因為我們會根據path用getBitmapFromLruCache方法在緩存中獲取圖片,或者異步去加載(開啟新的線程去加載),加載完成后會回調mUIHandler中的handleMessage
由于是在線程中處理的bitmap以及imageView,而在handler所在的那個函數中,imageView、path、bitmap是不確定是否為當前傳入的變量。因此封裝成一個bean對象,防止出現錯誤。還有個好處就是message對象可以攜帶一個object對象,因此將三個變量封裝bean對象,也是極好的
舉報
微信中的圖片選擇器綜合案例不容錯過,整體思路值得一學
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-01-28
在顯示GridView的時候,適配器的getView方法會被多次調用,因此loadImage也會被多次調用,而每次調用loadImage都會通過refreashBitmap方法來mUIHandler.sendMessage,而Task中refreashBitmap會新的線程中去執行,因此也許會有多個線程并發執行,也許當執行某一個loadImage的時候,正好mUIHandler的handleMessage也剛好在處理一個非該loadImage而sendMessage的message(注意:mUIHandler的handleMessage是在主線程中),如果不用ImgBeanHolder,就可能導致用msg.obj來取bitmap與剛才說的loadImage的參數的path和imageView發生錯亂
2016-01-28
在mUIHandler中的handleMessage中不能直接用msg.obj來取bitmap(前提是在sendMessage的時候只在msg.obj中綁定bitmap)然后根據loadImage方法參數path和imageView來設置圖片,因為mUIHandler中的handleMessage在執行的時候所獲得的bitmap不一定是當前的(與之對應的)path和imageView(也就是當前loadImage方法的參數path和imageView,因為mUIHandler是在loadImage中初始化的,所以mUIHandler的handleMessage可以直接調用loadImage方法的參數path和imageView),因為我們會根據path用getBitmapFromLruCache方法在緩存中獲取圖片,或者異步去加載(開啟新的線程去加載),加載完成后會回調mUIHandler中的handleMessage
2016-01-10
由于是在線程中處理的bitmap以及imageView,而在handler所在的那個函數中,imageView、path、bitmap是不確定是否為當前傳入的變量。因此封裝成一個bean對象,防止出現錯誤。還有個好處就是message對象可以攜帶一個object對象,因此將三個變量封裝bean對象,也是極好的