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