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

如何在Android中启动一个活动(即活动正在加载一些数据)之前显示进度对话框?

您应该在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(); 

当你在Android上开始一个长时间运行的进程时,总是build议在另一个线程上执行。 然后,您可以使用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 }