成人免费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-06-26 16:14:26

Android加載圖片內存溢出

2013-03-27 09:17:17

Android開發AndroidList

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

2013-10-16 16:17:15

iOS開發優化方案

2011-04-11 13:43:35

popupwindowlistviewAndroid

2009-10-28 09:25:18

VB.NET List

2021-04-20 08:49:38

AndroidKotlinColi

2025-02-10 10:52:34

WinForm窗口閃爍C#

2011-10-19 10:08:01

AndroidListView

2015-10-22 10:59:13

ListViewItem刷新

2014-09-17 11:20:38

AndroidListView技巧
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲风情在线观看 | 18gay男同69亚洲网站 | 青草福利 | www久久国产| 黄色大片毛片 | 91av在线视频观看 | 超碰97免费 | 欧美日韩成人影院 | 久久爱黑人激情av摘花 | 久久蜜桃资源一区二区老牛 | 国产精品s色 | 成av在线| 日韩毛片在线免费观看 | 一区二区三区免费 | 在线男人天堂 | 一区二区三区欧美大片 | 97精品超碰一区二区三区 | 欧美久久一级 | 国产精品亚洲一区 | 欧美激情精品久久久久久 | 免费在线色 | 久久久久久久一区 | 嫩草最新网址 | 久草在线在线精品观看 | 欧美一区二区大片 | 国产精品亚洲精品 | 日韩成人中文字幕 | 日韩久久久久久久久久久 | 国产情侣一区 | 国产精品久久久久久久久久三级 | 正在播放国产精品 | 国产成人免费视频 | 国产一区不卡 | 激情小说综合网 | 成年免费大片黄在线观看一级 | 一级毛片免费完整视频 | 99爱视频 | 日韩二区 | 亚洲精品久久久久久久久久久 | 国产精品久久久久久妇女6080 | 奇米av |