3

スプラッシュ スクリーンの後、メイン アクティビティで onCreate コンテンツをロードするのに約 6 秒かかります。だから、ロード中に進行状況ダイアログを表示したいのですが、これが私がしたことです:

import ...

private ProgressDialog mainProgress;

public void onCreate(Bundle davedInstanceState){
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    mProgress = new ProgressDialog (Main.this);
    mProgress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    mProgress.setMessage("Loading... please wait");
    mProgress.setIndeterminate(false);
    mProgress.setMax(100);
    mProgress.setProgress(0);
    mProgress.show();

    ---some code---

    mProgress.setProgress(50);

    ---some code---

    mProgress.setProgress(100);
    mProgress.dismiss();
}

動作しません...画面は5〜6秒間黒いままで、メインレイアウトをロードします。どの部分を間違えたのかわかりません:*(

4

2 に答える 2

3

ビジーなコードを別のスレッド (UI スレッド以外) で開始する必要があります。
アクティビティで ProgressDialog を作成し、スレッドで閉じます

mProgress = new ProgressDialog (Main.this);

Runnable runnable = new Runnable() {
    @Override
    public void run() {
        // code that needs 6 seconds for execution

        // after finishing, close the progress bar
        mProgress.dismiss();
    }
};

new Thread(runnable).start();
于 2012-06-05T22:33:42.283 に答える
1

これは、UIスレッドですべてを実行しているため、ブロックされているためです。

あなたは別のスレッドですべての重労働を行い、それを通して進行状況ダイアログを更新する必要があります

于 2012-06-05T22:36:12.937 に答える