ProgressDialog在加载Activity时

Pau*_*ues 2 android handler progressdialog

我发现这个代码在SO中显示ProgressDialog加载时Activity:

progDailog = ProgressDialog.show(MyActivity.this, "Process", "please wait....", true, true);

new Thread(new Runnable() {
    public void run() {
        // code for load activity
}).start();

Handler progressHandler = new Handler() {
    public void handleMessage(Message msg1) {
        progDailog.dismiss();
    }
};
Run Code Online (Sandbox Code Playgroud)

但我总是得到这个例外:

java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序

感谢您对此问题的任何帮助,在此先感谢您.

Sam*_*uca 6

这是我要做的,
AsyncTask在后台做"繁重的工作":

public class MyTask extends AsyncTask<String, String, String> {
  private Context context;
  private ProgressDialog progressDialog;

  public MyTask(Context context) {
    this.context = context;
  }

  @Override
  protected void onPreExecute() {
    progressDialog = new ProgressDialog(context);
    progressDialog.show();
  }

  @Override
  protected String doInBackground(String... params) {
    //Do your loading here
    return "finish";
  }

  @Override
  protected void onPostExecute(String result) {
    progressDialog.dismiss();
    //Start other Activity or do whatever you want
  }
}
Run Code Online (Sandbox Code Playgroud)

启动AsyncTask:

MyTask myTask = new MyTask(this);
myTask.execute("parameter");
Run Code Online (Sandbox Code Playgroud)

当然,您可以更改AsyncTask的泛型类型以匹配您的问题.

  • 优秀!只有一件事:为什么加载图标被"冻结"?动画有什么可做的吗? (2认同)