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