JavaFX Image отменить фоновую загрузку - PullRequest
0 голосов
/ 29 декабря 2018

Короче говоря;Есть ли способ отменить / очистить фоновую загрузку для изображений JavaFX?

В какой-то момент в моем коде я загружаю кучу изображений.По соображениям производительности они загружаются в фоновом режиме с помощью

public Image(String url, boolean backgroundLoading)

из класса Images.

Проблема заключается в том, что иногда при взаимодействии с пользователем программа обновляет список изображений (ине нуждаются в предыдущих) до окончания загрузки предыдущих.В этот момент я бы хотел отменить фоновую загрузку предыдущих.Прямо сейчас он все еще загружает предыдущие, что приводит к увеличению времени загрузки фактически необходимых изображений.

См. Пример ниже.Когда я получаю новый поток источников до того, как старый закончит обработку, контент начинает дольше отображать изображения, потому что он все еще загружает предыдущие (по крайней мере, это мое предположение).

List<ImageView> images = sources.map(source -> {
    ImageView iv = new ImageView(new Image(source.toUri().toString(), true));
    iv.setPreserveRatio(true);
    return iv;
}).collect(Collectors.toList());
content.getChildren().setAll(images);

1 Ответ

0 голосов
/ 29 декабря 2018

Вы можете отменить фоновую загрузку Image с помощью Image.cancel.

Отменяет фоновую загрузку этого изображения.

Не имеетэффект, если это изображение не загружено в фоновом режиме или загрузка уже завершена.

...