ボタンをクリックして、このメソッドを呼び出します。
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
。プログラムの解決方法、助けてください ありがとうございます!