У меня есть приложение для Android, которое должно работать как онлайн, так и офлайн, и я использую Glide для загрузки изображений. После загрузки базы данных я хочу запустить две задачи параллельно: загрузить все изображения на диск и загрузить все изображения, необходимые на текущем экране (а затем на следующих экранах). Проблема в том, что количество загружаемых изображений очень велико, а изображения, запрошенные для текущего экрана, добавляются в конец одной и той же очереди загрузки. Таким образом, я получаю «пустые» экраны, пока все изображения не будут загружены в кеш диска. Как заставить эти задачи работать параллельно?
public class GlideActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_glide);
downloadAllImages();
updateUi();
}
private void updateUi() {
ImageView imageView1 = (ImageView) findViewById(R.id.image_view1);
ImageView imageView2 = (ImageView) findViewById(R.id.image_view2);
ImageView imageView3 = (ImageView) findViewById(R.id.image_view3);
cachedGlideRandomRequest().into(imageView1);
cachedGlideRandomRequest().into(imageView2);
cachedGlideRandomRequest().into(imageView3);
}
private void downloadAllImages() {
for (int i = 0; i < 50; i++) {
cachedGlideRandomRequest().preload();
}
}
private DrawableRequestBuilder<String> cachedGlideRandomRequest() {
return Glide.with(getApplicationContext())
.load("https://unsplash.it/200/300?image=" + System.nanoTime() % 1000)
.diskCacheStrategy(DiskCacheStrategy.SOURCE);
}
}
Я хочу показывать изображения в ImageViews, пока downloadAllImages()
все еще работает в фоновом режиме.