本教程內(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)配置。
許多配置的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);
Image pipeline 默認(rèn)有3個(gè)線(xiàn)程池:
對(duì)于網(wǎng)絡(luò)下載,你可以定制網(wǎng)絡(luò)層的操作,具體參考:自定義網(wǎng)絡(luò)層加載.
對(duì)于其他操作,如果要改變他們的行為,傳入一個(gè)ExecutorSupplier即可。
內(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)控制。
你可使用Builder模式創(chuàng)建一個(gè) DiskCacheConfig:
DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder()
.set....
.set....
.build()
// when building ImagePipelineConfig
.setMainDiskCacheConfig(diskCacheConfig)
如果你想統(tǒng)計(jì)緩存的命中率,你可以實(shí)現(xiàn)ImageCacheStatsTracker, 在這個(gè)類(lèi)中,每個(gè)緩存時(shí)間都有回調(diào)通知,基于這些事件,可以實(shí)現(xiàn)緩存的計(jì)數(shù)和統(tǒng)計(jì)。