Добрый вечер. Столкнулся с проблемой при разработки клиентского приложения для android. При загрузки фотографий с сайта, фотографии грузятся, но изображения не появляются пока они все не будут загружены и резко отображаются все сразу, а мне хотелось бы чтобы они начали отображаться в процессе загрузки один на одним. Кроме того, в сам процесс загрузки приложение останавливается и ничего нельзя сделать в приложении пока загрузка не завершится, а мне хотелось бы чтобы когда фотки грузятся, то можно было перейти на другую страницу и отменить таким образом загрузку, если нужно.
Ниже представлен код загрузки изображений:
for(int i = 0; i < 15; i++) {
ImageView PostSmallPhoto = (ImageView) findViewById(ArrIDPost[i]);
LoadImage GetContLoadImg = new LoadImage();
GetContLoadImg.execute("http://site.ru/img/" + i + ".jpg");
try {
bitmap = GetContLoadImg.get(1, TimeUnit.SECONDS);
} catch (InterruptedException e) {
} catch (ExecutionException e) {
} catch (TimeoutException e) {
}
if (bitmap != null) {
PostSmallPhoto.setImageBitmap(bitmap);
} else {
PostSmallPhoto.setBackgroundResource(R.drawable.nophoto);
}
bitmap = null;
GetContLoadImg = null;
}
private class LoadImage extends AsyncTask<String, String, Bitmap> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
protected Bitmap doInBackground(String... args) {
try {
bitmap = BitmapFactory.decodeStream((InputStream) new URL(args[0]).getContent());
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
protected void onPostExecute(Bitmap image) {
if(!isOnline()) {
Toast toast = Toast.makeText(getApplicationContext(), getResources().getString(R.string.ForAppNeIntr), Toast.LENGTH_SHORT);
toast.show();
} else {
if (image != null) {
bitmap = image;
}
}
}
}
Как исправить код выше таким образом, чтобы фото грузились и отображались по очереди, а не ожидали пока загрузятся все фотографии? И как сделать чтобы приложение не останавливалось в момент загрузки, а работало как обычно?
Надеюсь на вашу помощь. Огромное спасибо!