0
protected void showSpinner() {
    dialogSpin = ProgressDialog.show(activity, "", 
            "Loading. Please wait...", true);

    Thread t = new Thread(new Runnable(){

        @Override
        public void run() {
            activity.runOnUiThread(new Runnable() {
                @Override
                public void run() {


                    EverydayNotesAndroid3Activity.importAllCalendar();
                }
            });
        }

    });
    t.start();
}

スレッドの実行中にスピナーを表示したい。このようにして、インポート中にカレンダーのインポートがユーザーにどのように行われるかを示すことができます。

問題: Spinner ダイアログは、インポートが完了したときにのみ表示されます。私のコードによれば、ダイアログを表示してからインポートを実行する必要があるため(30秒かかります)、ダイアログはインポートの終了を待って表示されるため、何が間違っているのかわかりません。

ご清聴ありがとうございました。詳細についてはお問い合わせください。

4

3 に答える 3

2

Asynctasksを調べることを検討してください。

于 2012-08-24T06:57:18.243 に答える
1

AsyncTaskを使用してカレンダーをインポートします。AsyncTaskには、オーバーライドできる3つのメソッドがあります。doInBackgroundを上書きし、そこでバックグラウンドスレッドで行われるすべてのことを行います。UIで何かが変更されるたびに、バックグラウンドタスクからpublishProgressを呼び出すことができます。次に、AsyncTaskはUIスレッドでonProgressUpdateを呼び出し、進行状況をユーザーに表示できるようにします。

于 2012-08-24T07:19:48.573 に答える
1

UIスレッド自体にカレンダーをインポートしています。その後、インポートが完了するまで進行状況ダイアログが待機します。するとまた表示されます。

進行状況ダイアログを表示する場合は、UI スレッドではなく別のスレッドでカレンダーをインポートします。

于 2012-08-24T06:46:55.583 に答える