[android_gallery_4.0]gallery補充,加載圖片機制

9)PhotoDataAdapter處理下的圖片加載機制

簡單說,可以分爲緩存機制以及線程池機制。兩個機制都有助於提高加載速度。

這裏有一個32個元素的數據索引區存放當前圖片周圍的圖片item,聲明見下。

    private final MediaItem mData[] = newMediaItem[DATA_CACHE_SIZE];

    private int mContentStart= 0;

    private int mContentEnd= 0;

她的範圍用是介乎mContentStart與mContentEnd之間。

這個索引區主要起到定位獲取到圖片信息的作用。該數據索引區與接下來的緩存區有關。並且該內容會隨着切換顯示不同圖片而變化,具體變化跟mContentStart與mContentEnd有關,相關代碼還看不明白。

緩存區存放五個圖片元素,如前面所說,圖片元素可以是完整畫面顯示的圖片,位於圖片下方的縮略圖圖片,可能出現的GIF圖片。

這裏存放的其實確切不是圖片元素,可以從存放的ImageCache定義可知,

privateHashMap<Long, ImageEntry> mImageCache = new HashMap<Long,ImageEntry>();

    private int mActiveStart = 0;

private int mActiveEnd = 0;

 

而imageentry存放有各種線程task,這個task負責着相應圖片元素的生成。而這些task均由下面提到的線程池進行啓動。

線程池最多能存放8個任務,同時能執行4個。這些任務,或者是生成縮略圖,或者是生成大圖片,或者是gif解碼。優先級先後順序也是按此順序。個人認爲,gif解碼耗時最長,生成縮略圖耗時最短,一般優先解決簡單問題。

隨着用戶手勢滑動圖片,緩存區都在滾動變化,猶如一個滑動窗口,滑動窗口外的數據都不理會先,只理會窗口內的數據先得到處理。

如此即是緩存機制與線程池機制。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章