好吧,这个越来越令人沮丧了。我已经在此处查看了有关 AsyncTasks 和常规线程中的进度对话框栏的帖子,但没有任何东西可以按照我的意愿工作。
在 AsyncTask 我是这样做的:
@Override
protected void onPreExecute()
{
super.onPreExecute();
// initialize the dialog
progressDialog.setTitle("Please wait...");
progressDialog.setMessage("Downloading team data...");
progressDialog.setIndeterminate(true);
progressDialog.setCancelable(true);
progressDialog.show();
}
@Override
protected Boolean doInBackground(String... parms) {
... stuff
@Override protected void onPostExecute(Boolean result) {
progressDialog.dismiss();
}
当我执行上述操作时,在 doInBackground 作业完成之前我什么也得不到。我读过的笔记说,在 main 中使用 get() 方法会阻塞进度条。
好的。我必须等待任务完成才能继续,所以我在没有 AsyncTask 的情况下写了同样的东西:
公共类 LoadTeamData2 {
Context mContext;
String teamName = "";
Boolean result;
String dataload = "";
ProgressDialog progressDialog;
public LoadTeamData2(Context mContext, String team) {
this.mContext = mContext;
teamName = team;
}
public Boolean LoadData () {
ProgressDialog progressDialog = new ProgressDialog(mContext);
progressDialog.setTitle("Please wait...");
progressDialog.setMessage("Downloading team data...");
progressDialog.setIndeterminate(true);
progressDialog.setCancelable(true);
// progressDialog.show();
ProgressDialog.show(mContext, "Title", "Message", true, true);
... more stuff
progressDialog.dismiss();
return true;
}
从上面我得到了进度对话框栏的最简短的闪光。
我什至从调用的过程中取出了进度对话框栏,并将 show() 和 dismiss() 方法放在对 DoStuff 的调用的两侧。依然没有。
我的智慧到此为止。有任何想法吗?谢谢!