如何在Android中启动活动之前显示进度对话框?

时间:2011-03-05 06:32:33

标签: android android-activity progressdialog android-progressbar android-dialog

如何在Android中启动活动之前显示进度对话框(例如,当活动加载某些数据时)?

2 个答案:

答案 0 :(得分:64)

您应该在AsyncTask中加载数据,并在数据加载完成后更新您的界面。

您甚至可以在AsyncTask的onPostExecute()方法中开始一项新活动。

更具体地说,您需要一个扩展AsyncTask的新类:

public class MyTask extends AsyncTask<Void, Void, Void> {
  public MyTask(ProgressDialog progress) {
    this.progress = progress;
  }

  public void onPreExecute() {
    progress.show();
  }

  public void doInBackground(Void... unused) {
    ... do your loading here ...
  }

  public void onPostExecute(Void unused) {
    progress.dismiss();
  }
}

然后在你的活动中你会这样做:

ProgressDialog progress = new ProgressDialog(this);
progress.setMessage("Loading...");
new MyTask(progress).execute();

答案 1 :(得分:3)

当您在Android上启动长时间运行的进程时,始终建议在另一个线程上执行此操作。然后,您可以使用UI线程显示进度对话框。您无法在运行该进程的同一(UI)线程中显示进度对话框。

执行以下操作以开始您的流程

pd = ProgressDialog.show(this, "Synchronizing data", "Please wait...");
Thread t = new Thread(this);
t.start();

为此,您的活动应按如下方式实施Runnable

public class SyncDataActivity extends Activity implements Runnable

最后一种方法来执行长时间运行的过程

@Override
public void run() {
      //your code here
}