在Android中运行方法时显示加载对话框?

时间:2012-06-14 05:29:24

标签: java android dialog loading progress

我有一个方法设置需要大约3-5秒才能运行(因为它在网上做了一些事情)我希望显示一个加载对话框,但我无法弄清楚如何做到这一点,我尝试启动加载dialod在我调用该方法之前,然后尝试在此之后立即解雇它:

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

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

2 个答案:

答案 0 :(得分:8)

AsyncTask是我的最爱,但您也可以使用处理程序:)

投入时间来完成这个不错的blog

以下代码段将为您提供帮助。

    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();
                };
            };
        }
    }

答案 1 :(得分:0)

在UI线程上运行一个持续时间很长的任务是“不可以”。使用AsyncTask在后台运行长时间任务,并在完成后更新UI。