ページに 30 以上の画像を読み込む必要があります (ティーザー テキスト付き)。AsyncTask を介してすべての画像を読み込みますが、メイン スレッドでしかビューを変更できないため、現在のレイアウトを変更できません。「ページの読み込み」中にアプリがハングする必要がないように、すべてを非同期に読み込む最良の方法は何ですか?
3 に答える
0
レイアウトを変更できないのはなぜですか? の場合AsyncTask
、UI スレッドでの実行を保証するonProgressUpdateがあります。コードでpublishProgressを呼び出すだけdoInBackground
です。
==アップデート==
private class LoadImageTask<Url, String, String> extends AsynTask{
doInBackground(Url... urls){
for(int i=0; i<urls.length; i++){
File img = DownloadImage(urls[i]); // Your download method..
publishProgress(img.filename); // Suppose it is saved in sd card
// publish progress will call onProgressUpdate immediately, but on different thread
}
}
onProgressUpdate(String filename){
// Update the UI.. this method will run on UI thread
displayImage(filename);
}
}
于 2012-05-09T00:33:44.470 に答える
0
バックグラウンドでビューを構築できるとは思いません。アプリがビジーである理由をユーザーが理解できるように、進行状況ダイアログを表示することをお勧めします。
于 2012-05-09T00:34:58.093 に答える
0
クラスがアクティビティを拡張する場合は、使用できます
runOnUiThread(new Runnable() {
public void run() {
//Update UI elements in this block
}
});
于 2012-05-09T00:36:08.780 に答える