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

您正在自己的 UI 线程中导入日历。然后你的进度对话框等待直到导入完成。然后它会再次显示。

如果要显示进度对话框,请在另一个线程中导入日历,而不是在 UI 线程中。

于 2012-08-24T06:46:55.583 回答
1

我会使用AsyncTask来导入日历。AsyncTask 具有三个可以被覆盖的方法。您覆盖 doInBackground 并执行在后台线程中完成的所有工作。每当 UI 中的某些内容发生变化时,您都可以从后台任务中调用 publishProgress。然后 AsyncTask 将在 UI-Thread 中调用onProgressUpdate以允许您向用户显示进度。

于 2012-08-24T07:19:48.573 回答