我正在使用AsyncTask(在我的主活动中启动)来加载一些数据:
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的原因。我尝试寻找一些解决方案,但没有成功。如果有人遇到过这个问题,请分享您的经验。非常感谢!