Я использую Fresco в своем приложении и инициализировать его следующим образом:
DiskCacheConfig diskCacheConfig = ...
ImagePipelineConfig imagePipelineConfig = ImagePipelineConfig.newBuilder(this)
.setMainDiskCacheConfig(diskCacheConfig)
.build();
Fresco.initialize(this, imagePipelineConfig);
Он отлично работает во всех случаях, кроме одного: прокручиваемый вид «огромный список больших изображений». (действительно медленно в этом случае).
Я прочитал документацию об изменении размера, а затем изменил инициализацию Fresco с помощью setDownsampleEnabled(true)< /сильный>
ImagePipelineConfig imagePipelineConfig = ImagePipelineConfig.newBuilder(this)
.setMainDiskCacheConfig(diskCacheConfig)
.setDownsampleEnabled(true) // faster for downsampling of big images
.build();
Fresco.initialize(this, imagePipelineConfig);
который отлично работает для этого «огромного списка больших изображений» ... но дает плохой результат для остальных, особенно когда я отображаю изображение в полноэкранном режиме. Изображения немного «мутные», см. этот пост.
Вопрос:
Можно ли использовать 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(...) дважды, один раз с моим приложением, второй раз для моей активности, в которой я отображаю полный список.
Что я должен делать?
Спасибо.
Конфигурация: (последняя) Fresco 1.5.0