Android - 正在加载,请稍候

nik*_*3ro 27 multithreading android

当我调用一些AsyncTask(例如从远程服务下载一些数据)时,我可以在Android开发中使用标准的"正在加载,请稍候"对话框吗?

Mir*_* N. 74

你的意思是不确定的ProgressDialog

编辑:即

ProgressDialog dialog = ProgressDialog.show(context, "Loading", "Please wait...", true);
Run Code Online (Sandbox Code Playgroud)

dialog.dismiss()完成后再打电话.


All*_*lly 19

如果您实现runnable以及扩展Activity,那么您可以像这样处理代码......

private ProgressDialog pDialog;

public void downloadData() {
    pDialog = ProgressDialog.show(this, "Downloading Data..", "Please wait", true,false);
    Thread thread = new Thread(this);
    thread.start();
}

public void run() {
// add downloading code here
    handler.sendEmptyMessage(0);
 }

private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        pDialog().dismiss();
        // handle the result here
    }
};
Run Code Online (Sandbox Code Playgroud)

值得一提的是,您可以设置进度对话框的内容视图,以便显示自定义消息/图像:)

pDialog.setContentView(R.layout.X); 
Run Code Online (Sandbox Code Playgroud)


Dan*_*Lew 10

Mirko基本上是正确的,但有两点需要注意:

  1. ProgressDialog.show()是一种自动创建对话框的快捷方式.与其他对话框不同,它不应该被使用onCreateDialog(),因为它会导致Android 1.5中的错误.

  2. 您应该注意AsyncTask + ProgressDialog +屏幕方向更改还有一些问题 - 请查看此问题.