Приложение должно загрузить много изображений из сети. Я хотел бы загрузить эти изображения в 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.