本教程內(nèi)容來源于:http://fresco-cn.org
采用 知識共享 署名 4.0 國際 許可協(xié)議 進行許可
對于大多數(shù)的應(yīng)用,F(xiàn)resco的初始化,只需要以下一句代碼:
Fresco.initialize(context);
對于那些需要更多進一步配置的應(yīng)用,我們提供了ImagePipelineConfig。
以下是一個示例配置,列出了所有可配置的選項。幾乎沒有應(yīng)用是需要以下這所有的配置的,列出來僅僅是為了作為參考。
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);
請記得將配置好的ImagePipelineConfig 傳遞給 Fresco.initialize! 否則仍舊是默認配置。
許多配置的Builder都接受一個Supplier 類型的參數(shù)而不是一個配置的實例。
創(chuàng)建時也許有一些麻煩,但這帶來更多的利好:這允許在運行時改變創(chuàng)建行為。以內(nèi)存緩存為例,每隔5分鐘就可檢查一下Supplier,根據(jù)實際情況返回不同類型。
如果你需要動態(tài)改變參數(shù),那就是用Supplier每次都返回同一個對象。
Supplier<X> xSupplier = new Supplier<X>() {
public X get() {
return new X(xparam1, xparam2...);
}
);
// when creating image pipeline
.setXSupplier(xSupplier);
Image pipeline 默認有3個線程池:
對于網(wǎng)絡(luò)下載,你可以定制網(wǎng)絡(luò)層的操作,具體參考:自定義網(wǎng)絡(luò)層加載.
對于其他操作,如果要改變他們的行為,傳入一個ExecutorSupplier即可。
內(nèi)存緩存和未解碼的內(nèi)存緩存的配置由一個Supplier控制,這個Supplier返回一個[MemoryCacheParams](../javadoc/reference/com/facebook/imagepipeline/cache/MemoryCacheParams.html#MemoryCacheParams(int, int, int, int, int)) 對象用于內(nèi)存狀態(tài)控制。
你可使用Builder模式創(chuàng)建一個 DiskCacheConfig:
DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder()
.set....
.set....
.build()
// when building ImagePipelineConfig
.setMainDiskCacheConfig(diskCacheConfig)
如果你想統(tǒng)計緩存的命中率,你可以實現(xiàn)ImageCacheStatsTracker, 在這個類中,每個緩存時間都有回調(diào)通知,基于這些事件,可以實現(xiàn)緩存的計數(shù)和統(tǒng)計。