Fresco - setDownsampleEnabled true/false?

Я использую 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


person Pascal    schedule 25.10.2017    source источник


Ответы (1)


К сожалению, в настоящее время Fresco не поддерживает изменение конфигурации понижения частоты дискретизации. Изменение этого потребует нескольких внутренних изменений. Не стесняйтесь отправлять запрос на включение, чтобы добавить эту функциональность :)

person Alexander Oprisnik    schedule 07.11.2017
comment
Спасибо за ответ! Как я уже писал, текущая ситуация меня вполне устраивает. Так что я оставлю все как есть. - person Pascal; 10.11.2017