Android4.0图库Gallery2代码分析(二) 数据管理和数据加载
Android4.0圖庫Gallery2代碼分析(二) 數據管理和數據加載
2012-09-07 11:19?8152人閱讀?評論(12)?收藏?舉報 代碼分析android相冊優化工作Android4.0圖庫Gallery2代碼分析(二) 數據管理和數據加載
一 圖庫數據管理
Gallery2的數據管理 DataManager(職責:管理數據源)- MediaSource(職責:管理數據集) - MediaSet(職責:管理數據項)。DataManager中初始化所有的數據源(LocalSource, PicasaSource, MtpSource, ComboSource, ClusterSource, FilterSource, UriSource, SnailSource),將數據源放到一個Hash表中,提供存取操作。MediaSource負責管理數據集,以LoacalSource為例,從他的createMediaObject函數可以看出,根據路徑他可以創建出LocalMediaSet, LocalMedia, LocalImage, LocalVideo等。MediaSet負責管理數據項MediaItem. 圖庫數據管理簡要圖如圖-1
圖-1:圖庫數據管理簡化圖
二 數據項(MediaItem)的加載過程。
下面介紹一下,Albumpage加載縮略圖列表的過程為例子。AlbumSetPage加載相冊縮略圖和PhotoPage加載大圖的過程,請讀者自行分析。
在相冊頁面(AlbumPage)和縮略圖數據加載相關的有兩個成員變量AlbumDataLoader和AlbumSlotRender。AlbumDataLoader負責維護要加載數據提供一個管理,將要加載的數據項MediaItem放在鏈表中進行存取操作,動態的增刪改查操作。在AlbumPage類的Onresume函數中調用了AlbumDataLoader的resume,AlbumDataLoader的resume創建了一個線程,隨時處理數據的變化(MediaItem的增刪改查)。AlbumDataLoader的作用過程見圖2。
圖-2:AlbumDataLoader的作用過程
? ? ? ?AlbumDataLoader負責數據模型的維護,AlbumSlotRender負責數據的縮略圖的加載工作,為了提高性能,數據加載使用了【線程池】。AlbumSlotRender從AlbumDataLoader獲取要加載的數據MediaItem, 根據每一個MediaItem的狀態確定是是否Bitmap縮略圖的是需要加載、回收、還是等待等。對于需要加載的縮略圖,提交到線程池中。AlbumSlotRender的作用過程見圖3。數據加載過程中,【同步問題】其實也是需要重點分析的,由于時間有限,這里就縮略了,見諒!
圖-3:AlbumSlotRender的作用過程
?
三 后續代碼分析,大致提綱
Android4.0圖庫Gallery2代碼分析(三) 狀態管理和窗口切換
Android4.0圖庫Gallery2代碼分析(四) 消息處理(點擊和手勢)
Android4.0圖庫Gallery2代碼分析(五) 各種數據源和數據源的管理
Android4.0圖庫Gallery2代碼分析(六) 可渲染數據元及其多樣性
Android4.0圖庫Gallery2代碼分析(七) 遙控器控制的實現
Android4.0圖庫Gallery2代碼分析(八) 和數據掃描線程的數據交互
Android4.0圖庫Gallery2代碼分析(九) 幾點可優化的地方
總結
以上是生活随笔為你收集整理的Android4.0图库Gallery2代码分析(二) 数据管理和数据加载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jquery.validation.js
- 下一篇: NSString和SwiftString