成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android解決ListView加載圖片閃爍

移動開發 Android
最近負責帶領公司項目重構,重構的時候發現項目里面同時在使用兩個圖片加載框架,andriod-universal-image-loader和fresco,這兩個框架其實都挺好的,不過項目里面不能同時使用兩個框架。因為他們初始化和運行的時候都需要分配一定的內存,這樣會導致緩存圖片的內存變大,如果不知情分配過大,還有可能導致隱形的oom。

最近負責帶領公司項目重構,重構的時候發現項目里面同時在使用兩個圖片加載框架,andriod-universal-image-loader和fresco,這兩個框架其實都挺好的,不過項目里面不能同時使用兩個框架。因為他們初始化和運行的時候都需要分配一定的內存,這樣會導致緩存圖片的內存變大,如果不知情分配過大,還有可能導致隱形的oom。

問了以前的老員工都說不知道具體原因,說是歷史遺留問題。

Android解決ListView加載圖片閃爍
出現閃爍的頁面

***一個老員工說,一個類似發朋友圈功能的地方,如果用戶選擇了多張圖片待發送,這個時候用戶又點擊刪除某張圖片,這個時候剩下的圖片列表就會出現閃爍問題,說用fresco解決不了,用imageloader就不會出現閃爍的問題。暈,總不能因為要解決一個問題引入一個700kb的第三方框架吧!

fresco是facebook出品,在穩定性和調用簡易性方面還是值得信賴的。andriod-universal-image-loader比較大,并且好像很長時間也不怎么維護和更新了。***決定使用fresco框架。

使用fresco那么就面對自己解決加載圖片閃爍的問題,其實所有圖片框架原理都大同小異,首先去memory里面加載,沒有找到就是去本地緩存sdcard里面查找加載,如果還沒有,那么沒辦法只能使用網絡從圖片服務器加載了。

回歸正題,導致刪除圖片閃躲的原因是什么呢?

刪除一張圖片后,需要對圖片列表進行刷新操作,這個時候需要重新從sdcard里面讀取圖片,這么問題就來了,因為現在的手機照相機像素都非常高,好多都是4000*2500的,你可以測試一下BitmapFactory.decodeFile()從sdcard加載一張這樣大小的圖片需要300多ms,如果加上旋轉變換,那么至少需要1500多ms。你想肯定會出現卡頓閃爍的問題了。

知道導致原因,那么如何解決?

  1. 必須對Bitmap做縮略圖處理。
  2. 對于已經加載過的進行memory緩存處理。廢話不多說,直接上代碼吧!

***步:創建一個hashmap保存bitmap對象,千萬記得bitmap要用弱引用,防止加載過多導致oom。

Android解決ListView加載圖片閃爍
弱引用保存對象

第二步:從map中直接取出bitmap,如果不為空就直接顯示,為空就從sdcard中加載。

Android解決ListView加載圖片閃爍
判斷從sdcard還是從內存中

第三步:記得開啟開啟多線程加載,本地看似挺快,圖片多了也會anr,也會卡頓。用戶體驗不好。

Android解決ListView加載圖片閃爍
多線程sdcard加載圖片

第四步:這里面有兩個比較關鍵的技術點。

1、加載bitmap的時候,對圖片進行壓縮。

Android解決ListView加載圖片閃爍
壓縮圖片

2、對于三星手機拍照后圖片旋轉問題,如何對圖片進行旋轉處理。

Android解決ListView加載圖片閃爍
獲取圖片旋轉角度

Android解決ListView加載圖片閃爍
使用矩陣旋轉圖片

以上就是解決問題的所有代碼,總共加起來不到100行,問題都解決了,最主要用這不到100行代碼,替換了一個700kb左右的圖片加載框架,這個才是解決問題的***收益。

現在的程序員有一個通病就是都是喜歡拿來主義,啥都喜歡用第三方的,別人現成的,導致現在好多公司的項目引入大量的第三方庫,有很多僅僅用了不到千分之一的功能,你說何必呢?自己分析下,幾行代碼往往就可以解決了。

***送給所有的it朋友一句話,希望引起你們的共勉。

  • 所有復雜問題要簡單化,所有簡單問題還是要簡單化。
責任編輯:未麗燕 來源: 簡書
相關推薦

2011-06-03 10:48:23

Android ListView

2011-05-31 11:05:16

ListView 數據

2011-04-11 14:14:29

checkboxlistviewAndroid

2013-06-27 11:16:27

Android異步加載

2011-05-27 15:02:15

Android ListView

2015-06-11 10:12:26

Android圖片加載緩存

2013-03-27 09:17:17

Android開發AndroidList

2013-06-26 16:14:26

Android加載圖片內存溢出

2014-12-17 09:46:30

AndroidListView最佳實踐

2011-08-18 17:20:21

IOS開發TableView圖片

2015-08-07 10:08:36

Facebook框架

2013-07-10 10:21:22

Android Lis

2009-10-28 09:25:18

VB.NET List

2011-04-11 13:43:35

popupwindowlistviewAndroid

2014-09-17 11:20:38

AndroidListView技巧

2010-01-25 17:53:35

Android Lis

2021-04-20 08:49:38

AndroidKotlinColi

2013-10-16 16:17:15

iOS開發優化方案

2011-10-19 10:08:01

AndroidListView

2015-10-22 10:59:13

ListViewItem刷新
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产一区二区三区在线观看 | 美国a级毛片免费视频 | 第一区在线观看免费国语入口 | 国产色婷婷精品综合在线播放 | 精品久久久久久久久久久久 | 久久99精品国产99久久6男男 | 久久免费高清 | 亚洲一区导航 | 黄色片大全在线观看 | 国产成人一区二区 | 亚洲成人一区二区 | 亚洲精品国产a久久久久久 午夜影院网站 | 色婷婷精品久久二区二区蜜臂av | 国产永久免费 | 日韩视频免费看 | 欧美高清一级片 | 国产成人综合网 | 少妇黄色 | 日韩欧美一区二区在线播放 | www久久爱 | 久久综合婷婷 | 欧美日韩一区二区三区四区五区 | 黄视频在线网站 | 最新日韩在线 | 天堂一区 | 男女爱爱福利视频 | 久久精品国产免费高清 | 91精品国产综合久久久久久丝袜 | 国产日产欧产精品精品推荐蛮挑 | 日韩免费| 蜜桃五月天 | 久热久热| 成人高清在线视频 | 一区二区福利视频 | 欧美日韩精品影院 | 黄色在线免费观看视频网站 | av永久免费 | 欧美成年黄网站色视频 | 超碰日本 | 国产情侣激情 | 在线国产中文字幕 |