1

アクティビティが表示された後、いくつかのスクリプトを実行しようとしています。Web からいくつかの画像を読み込んで、アクティビティに動的に表示しています。複数のランナブルを実行していますが、各ランナブルは を呼び出しますAsynctask(イメージを読み取り、に割り当てるとImageView、イメージ ビューがonCreate関数で作成されます) が、すべてのランナブルの asynctask が完了した後にのみアクティビティが表示されます。

これを達成するのを手伝ってくれることを願っています。私が探しているのは、アクティビティを表示してから、画像を次々に読み込んで表示することです。

public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);

    if (!hasFocus)
        return;
    Handler h = new Handler();
    Runnable[] r;
    int i = 0;
    r = new Runnable[files.length];
    for (i = 0; i < files.length; i++) {
        final int j = i;
        r[i] = new Runnable() {
            public void run() {
                ViewGroup vg = (ViewGroup) findViewById(R.id.RootView);

                Log.v("ASYNC", "Starting Call " + j);
                // new BitmapWorkerTask().execute(img, i);
                new BitmapWorkerTask(img, j).execute();
                vg.invalidate();
            }
        };
        h.post(r[i]);
        Log.v("ASYNC", "Posted " + i);
    }
    return;
};
4

1 に答える 1

0

onWindowFocusChanged(boolean hasFocus)Activityライフサイクル方式ではありません。代わりに、タスクを実行する必要がありますonCreate。ロードに時間がかかる場合は、ある種の進行状況スピナーを表示できます。

于 2012-07-19T23:16:44.820 に答える