我在我的应用程序中使用Fresco,并且initialize像这样:
DiskCacheConfig diskCacheConfig = ...
ImagePipelineConfig imagePipelineConfig = ImagePipelineConfig.newBuilder(this)
.setMainDiskCacheConfig(diskCacheConfig)
.build();
Fresco.initialize(this, imagePipelineConfig);
在所有情况下,它都能正常工作,但只有一种:“大图像大列表”可滚动视图。 (在这种情况下真的很慢)。
我阅读了有关resizing的文档,然后使用setDownsampleEnabled(true)更改了Fresco初始化
ImagePipelineConfig imagePipelineConfig = ImagePipelineConfig.newBuilder(this)
.setMainDiskCacheConfig(diskCacheConfig)
.setDownsampleEnabled(true) // faster for downsampling of big images
.build();
Fresco.initialize(this, imagePipelineConfig);
在此“大量大图像列表”视图中效果很好...但是对于其他图像效果不佳,尤其是当我确实全屏显示图像时。图像有点“模糊”,请参见this post。
题:
是否可以仅对我的应用程序的“一部分”使用setDownsampleEnabled(true)?
我想要所有应用程序的“标准”设置,但我需要setDownsampleEnabled(true)的“大图像大列表”除外。
也许有一种方法可以使用ImagePipelineConfig ...来配置它?
坦白说,目前的情况几乎可以,所以这没什么大不了的,但是我想知道是否有可能,然后测试一下结果。
注意:
我深入研究了Fresco代码,并看到了以下内容:
package com.facebook.drawee.backends.pipeline;
...
public class Fresco {
...
public static void initialize(Context context, @Nullable ImagePipelineConfig imagePipelineConfig, @Nullable DraweeConfig draweeConfig) {
if(sIsInitialized) {
FLog.w(TAG, "Fresco has already been initialized! `Fresco.initialize(...)` should only be called 1 single time to avoid memory leaks!");
} else {
sIsInitialized = true;
}
...
}
...
“内存泄漏” ..哇
因此,我不敢两次调用Fresco.initialize(...),一次是在应用程序中调用,第二次是我的活动显示完整列表。
我该怎么办?
谢谢。
配置:
(最新)壁画1.5.0
最佳答案
不幸的是,Fresco目前不支持更改下采样配置。更改此设置将需要进行一些内部更改。随时发送拉取请求以添加此功能:)
关于java - Fresco -setDownsampleEnabled是/否?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46926826/