我正在使用的AsyncTask(我在我的主要活动我开始)来加载一些数据:的AsyncTask不显示ProgressDialog
Context context = VehicleTabView.this;
ProgressDialog progressDialog = new ProgressDialog(context);
progressDialog.setMessage("Loading...");
new LoadingVehicles(context, progressDialog).execute(null, null, null);
这里是AsyncClass:
package com.example.schedule_vehicles;
import com.example.utils.VehicleNames;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
// Showing a ProgressDialog once loading the list of vehicles is completed using an AsyncTask
public class LoadingVehicles extends AsyncTask<Void, Void, Void> {
Context context;
ProgressDialog progressDialog;
public LoadingVehicles(Context context, ProgressDialog progressDialog) {
this.context = context;
this.progressDialog = progressDialog;
}
@Override
protected void onPreExecute() {
progressDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
new VehicleNames(context);
return null;
}
@Override
protected void onPostExecute(Void result) {
progressDialog.dismiss();
}
}
的问题ProgressDialog没有显示在屏幕上。
我键入Log.d,查看程序是否正在经历所有阶段 - onPreExecute,doInBackground,onPostExecute,并且它正在经历所有阶段并执行我需要的工作。 但是 ProgressDialog未显示。我读了很多关于这个东西的信息,似乎PRE和POST执行是由主线程启动的,它被DOINBACKGROUND方法阻塞,这就是不能看到ProgressDialog的原因。我试图找到一些答案如何解决 - 但没有成功。
如果有人遇到此问题,请分享您的经验。非常感谢!
程序是否进入'onPreExecute()'循环,如果不尝试使用super.onPreExecute(),它可能会有所帮助。 – 2012-08-17 11:49:51