在 Android 中启动 Activity 之前(即,当 Activity 加载一些数据时)如何显示进度对话框?
问问题
34276 次
2 回答
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();
于 2011-03-05T06:40:15.017 回答
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
}
于 2011-03-05T06:37:51.450 回答