我正在使用 AsyncTask (我在我的主要活动中开始)来加载一些数据:
Context context = VehicleTabView.this;
ProgressDialog progressDialog = new ProgressDialog(context);
progressDialog.setMessage("Loading...");
new LoadingVehicles(context, progressDialog).execute(null, null, null);
这是异步类:
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的原因。我试图找到一些答案,这是如何解决的——但没有成功。
如果有人遇到这种情况,请分享您的经验。多谢!