3

我有一个需要大约 3-5 秒才能运行的方法设置(因为它会在线执行某些操作),我想显示一个加载对话框,但我不知道该怎么做,我尝试在调用之前启动加载拨号然后该方法尝试像这样立即将其关闭:

dialog.show();
myMethod();
dialog.cancel();

但这没有用,有人有什么建议吗?

4

2 回答 2

8

AsyncTask 是我的最爱,但你也可以使用 Handlers :)

花时间浏览这个不错的博客

下面的片段会帮助你。

    package org.sample;

    import android.app.Activity;
    import android.app.ProgressDialog;
    import android.os.Bundle;
    import android.os.Handler;

    public class Hello extends Activity {

        private Handler handler;
        private ProgressDialog dialog;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            dialog = new ProgressDialog(this);
            dialog.setMessage("Please Wait!!");
            dialog.setCancelable(false);
            dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
            dialog.show();

            new Thread() {
                public void run() {
                    // Do operation here.
                    // ...
                    // ...
                    // and then mark handler to notify to main thread 
                    // to  remove  progressbar
                    //
                    // handler.sendEmptyMessage(0);
                    //
                    // Or if you want to access UI elements here then
                    //
                    // runOnUiThread(new Runnable() {
                    //
                    //     public void run() {
                    //         Now here you can interact 
                    //         with ui elemements.
                    //
                    //     }
                    // });
                }
            }.start();

            handler = new Handler() {
                public void handleMessage(android.os.Message msg) {
                    dialog.dismiss();
                };
            };
        }
    }
于 2012-06-14T05:39:40.863 回答
1

在 UI 线程上运行长时间的任务是“不不”。用于AsyncTask在后台运行长时间的任务并在完成时更新 UI。

于 2012-06-14T05:32:44.423 回答