鍍金池/ 教程/ Android/ 配置Image Pipeline
進(jìn)度條
在JAVA代碼中使用Drawees
Drawee的各種效果配置
緩存
一些陷阱
關(guān)于在A(yíng)ndroid Studio中編譯
多圖請(qǐng)求及圖片復(fù)用
自定義網(wǎng)絡(luò)加載
支持的URIs
可關(guān)閉的引用
監(jiān)聽(tīng)下載事件
修改圖片
引入Fresco
縮放
圓角和圓圈
配置Image Pipeline
縮放和旋轉(zhuǎn)圖片
(圖片請(qǐng)求)Image Requests
自定義View
使用ControllerBuilder
在XML中使用Drawees
開(kāi)始使用 Fresco
關(guān)鍵概念
Image Pipeline介紹
漸進(jìn)式JPEG圖
數(shù)據(jù)源和數(shù)據(jù)訂閱者
直接使用Image Pipeline
動(dòng)畫(huà)圖(gif)
使用其他的Image Loader

配置Image Pipeline

本教程內(nèi)容來(lái)源于:http://fresco-cn.org
采用 知識(shí)共享 署名 4.0 國(guó)際 許可協(xié)議 進(jìn)行許可

對(duì)于大多數(shù)的應(yīng)用,F(xiàn)resco的初始化,只需要以下一句代碼:

Fresco.initialize(context);

對(duì)于那些需要更多進(jìn)一步配置的應(yīng)用,我們提供了ImagePipelineConfig。

以下是一個(gè)示例配置,列出了所有可配置的選項(xiàng)。幾乎沒(méi)有應(yīng)用是需要以下這所有的配置的,列出來(lái)僅僅是為了作為參考。

ImagePipelineConfig config = ImagePipelineConfig.newBuilder()
    .setBitmapMemoryCacheParamsSupplier(bitmapCacheParamsSupplier)
    .setCacheKeyFactory(cacheKeyFactory)
    .setEncodedMemoryCacheParamsSupplier(encodedCacheParamsSupplier)
    .setExecutorSupplier(executorSupplier)
    .setImageCacheStatsTracker(imageCacheStatsTracker)
    .setMainDiskCacheConfig(mainDiskCacheConfig)
    .setMemoryTrimmableRegistry(memoryTrimmableRegistry) 
    .setNetworkFetchProducer(networkFetchProducer)
    .setPoolFactory(poolFactory)
    .setProgressiveJpegConfig(progressiveJpegConfig)
    .setRequestListeners(requestListeners)
    .setSmallImageDiskCacheConfig(smallImageDiskCacheConfig)
    .build();
Fresco.initialize(context, config);

請(qǐng)記得將配置好的ImagePipelineConfig 傳遞給 Fresco.initialize! 否則仍舊是默認(rèn)配置。

關(guān)于Supplier

許多配置的Builder都接受一個(gè)Supplier 類(lèi)型的參數(shù)而不是一個(gè)配置的實(shí)例。

創(chuàng)建時(shí)也許有一些麻煩,但這帶來(lái)更多的利好:這允許在運(yùn)行時(shí)改變創(chuàng)建行為。以?xún)?nèi)存緩存為例,每隔5分鐘就可檢查一下Supplier,根據(jù)實(shí)際情況返回不同類(lèi)型。

如果你需要?jiǎng)討B(tài)改變參數(shù),那就是用Supplier每次都返回同一個(gè)對(duì)象。

Supplier<X> xSupplier = new Supplier<X>() {
  public X get() {
    return new X(xparam1, xparam2...);
  }
);
// when creating image pipeline
.setXSupplier(xSupplier);

線(xiàn)程池

Image pipeline 默認(rèn)有3個(gè)線(xiàn)程池:

  1. 3個(gè)線(xiàn)程用于網(wǎng)絡(luò)下載
  2. 兩個(gè)線(xiàn)程用于磁盤(pán)操作: 本地文件的讀取,磁盤(pán)緩存操作。
  3. 兩個(gè)線(xiàn)程用于CPU相關(guān)的操作: 解碼,轉(zhuǎn)換,以及后處理等后臺(tái)操作。

對(duì)于網(wǎng)絡(luò)下載,你可以定制網(wǎng)絡(luò)層的操作,具體參考:自定義網(wǎng)絡(luò)層加載.

對(duì)于其他操作,如果要改變他們的行為,傳入一個(gè)ExecutorSupplier即可。

內(nèi)存緩存的配置

內(nèi)存緩存和未解碼的內(nèi)存緩存的配置由一個(gè)Supplier控制,這個(gè)Supplier返回一個(gè)[MemoryCacheParams](../javadoc/reference/com/facebook/imagepipeline/cache/MemoryCacheParams.html#MemoryCacheParams(int, int, int, int, int)) 對(duì)象用于內(nèi)存狀態(tài)控制。

配置磁盤(pán)緩存

你可使用Builder模式創(chuàng)建一個(gè) DiskCacheConfig:

DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder()
   .set....
   .set....
   .build()

// when building ImagePipelineConfig
.setMainDiskCacheConfig(diskCacheConfig)

緩存統(tǒng)計(jì)

如果你想統(tǒng)計(jì)緩存的命中率,你可以實(shí)現(xiàn)ImageCacheStatsTracker, 在這個(gè)類(lèi)中,每個(gè)緩存時(shí)間都有回調(diào)通知,基于這些事件,可以實(shí)現(xiàn)緩存的計(jì)數(shù)和統(tǒng)計(jì)。

上一篇:一些陷阱下一篇:關(guān)鍵概念