私の活動では、いくつかのイメージをダウンロードし、それぞれをメインレイアウトに追加して表示します。私はこれらの3つのアプローチを試みたが、イメージがロードされるまで、それぞれの時間は、私の進捗ダイアログがフリーズ:非同期タスクでダイアログがフリーズする
第一のアプローチ:非同期タスクを使用して:私はdoInBackground(上の画像をダウンロード)し、メインレイアウトに追加onPostExecuteを()
を第二:上記と同じですが、私は第三の各画像の1 onProgressUpdate()
追加:数秒間ダイアログフリーズハンドラとスレッド
たびに進歩を使用して(実際には全体をアプリケーションがフリーズします)、画像がダウンロードされて画面に表示されます。
私は長い間この問題を解決しようとしていますが、まだ何もしていません。何か案は?ここに私のコードの一部です:
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) {
//...
}
});
}
どのようにAsyncTaskを実行していますか? – dmon
loadTask = new LoadingTask(); loadTask.execute(); – MScott