点击按钮来调用这个方法:的AsyncTask运行5次,然后无法运行doInBackground方法
private void goRegister(final boolean isUsername) {
new Loading.LoadTast(ctx) {
@Override
protected String doInBackground(Integer... params) {
Looper.prepare();
String msg=doRegister(isUsername);
closeProgressDialog();
if(msg == null || msg.length() == 0) {
SmartNgApplication.getInstance().exit();
} else {
BaseHelper.showToast(ctx, msg);
}
Looper.loop();
return null;
}
}.execute();
}
,这是LoadTast类:
public abstract static class LoadTast extends AsyncTask <Integer, Integer, String > {
private ProgressDialog progressDialog;
private Context ctx;
public LoadTast(Context ctx) {
this.ctx=ctx;
}
protected abstract String doInBackground(Integer... params);
public void onPreExecute() {
super.onPreExecute();
progressDialog=ProgressDialog.show(ctx, "", "loading...", true, false);
}
public void onPostExecute(String result) {
super.onPostExecute(result);
progressDialog.dismiss();
BaseHelper.showToast(ctx, result);
}
public void closeProgressDialog() {
if(progressDialog != null) {
progressDialog.dismiss();
}
}
}
我的计划是: 当我点击5次按钮不会调用doInbackground
方法并且屏幕始终运行加载。我猜代码运行onPreExecute
而不是运行doInbackground
。为什么?? 在AsyncTask
有一个线程池,CORE_POOL_SIZE=5
。如何解决该方案,帮助我谢谢你!
我删除closeProgressDialog在doInBackground代码运行良好 – Sunxc
我不明白。它解决了你的问题吗?如果是这样,请勾选此答案。如果没有,请告诉我们什么是状态。正如我写的,asyncTask不应该被执行多次。如果您希望多次执行相同的任务,则必须创建多个任务实例。 –