0

ページに 30 以上の画像を読み込む必要があります (ティーザー テキスト付き)。AsyncTask を介してすべての画像を読み込みますが、メイン スレッドでしかビューを変更できないため、現在のレイアウトを変更できません。「ページの読み込み」中にアプリがハングする必要がないように、すべてを非同期に読み込む最良の方法は何ですか?

4

3 に答える 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 に答える