Приложение должно загружать множество изображений из сети.
Я хотел бы загрузить эти изображения в parallel
максимально эффективно.
Для достижения параллельной загрузки используется flatMap
, с предоставлением значения maxConcurent
.
Disposable ds =
dataManager.getAllImages()
.flatMap(image -> Observable.zip(
dataManager.processImageCaching(image.getFullSizeImage()),
dataManager.processImageCaching(image.getThumbImage()),
(Optional<CachedImage> fullSizeImage, Optional<CachedImage> thumbImage) -> {
image.setFullSizeImageLocalPath(fullSizeImage.map(CachedImage::getFilePathInternal).orElse(null));
image.setThumbImageLocalPath(thumbImage.map(CachedImage::getFilePathInternal).orElse(null));
return image;
})
.subscribeOn(Schedulers.io()), MAX_CONCURRENT_THREADS)
.doOnNext(dataManager::saveCachedImageToDb)
.subscribeOn(Schedulers.io())
Приложение работает и загружает параллельно, но используемое значение для max concurrent
, вероятно, не оптимально и не может быть универсальным.
Я думаю, это значение может быть различным для разных устройств.
Может кто-нибудь подсказать мне, как выбрать максимальное максимальное значение одновременности на основе возможностей устройства?
Благодарю.
Примечание: текущее максимальное значение одновременно составляет 3