В своей деятельности я загружаю несколько изображений, а затем отображаю их, добавляя каждое из них в свой основной макет.Я попробовал эти 3 подхода, но каждый раз, когда мой диалог прогресса зависает до загрузки изображений:
1-й подход: использование асинхронной задачи: я загружаю изображения в doInBackground () и добавляю их в основной макет onPostExecute ()
2-й: То же, что и выше, но я добавляю каждое из изображений в OnProgressUpdate ()
3-й: Использование обработчика и потока
Каждый раз, когда диалоговое окно прогресса останавливаетсяв течение нескольких секунд (фактически все приложение зависает), пока изображения не будут загружены и отображены на экране.
Я пытался исправить это в течение длительного времени, но пока ничего.Есть идеи?Вот часть моего кода:
protected Integer doInBackground(Void... params) {
//...
try {
//download images
}
} catch (JSONException e) {
e.printStackTrace();
}
if (!loadTask.isCancelled()) {
//Display images
int length=imageList.size();
for (i=0; i<length; i++) {
publishProgress(i);
}
}
return 1;
}
protected void onProgressUpdate(Integer... a) {
//interaction with UI thread
int i = a[0];
ImageView im = new ImageView (MyActivity.this);
im.setImageBitmap(getRemoteImage(imageUrl));
im.setLayoutParams(Params);
im.setAdjustViewBounds(true);
im.setPadding(px2, px2, px2, px2);
im.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//...
}
});
}