Async task to show an AlertDialog

随声附和 提交于 2019-11-27 15:18:26

Easy: show dialog onPreExecute, register() in doInBackground and hide dialog in onPostExecute. Finally, do new RegisterTask().execute() in your onclick.

 private class RegisterTask extends AsyncTask<Void, Void, Boolean> {
  private final ProgressDialog dialog = new ProgressDialog(YourClass.this);

  protected void onPreExecute() {
     this.dialog.setMessage("Signing in...");
     this.dialog.show();
  }

  protected Boolean doInBackground(final Void unused) {
     return Main.this.register(); //don't interact with the ui!
  }

  protected void onPostExecute(final Boolean result) {
     if (this.dialog.isShowing()) {
        this.dialog.dismiss();
     }
     if (result.booleanValue()) {
     //also show register success dialog
     }
  }
}

Why you don't use Android AsyncTask? For example:

public class MyPreloader extends AsyncTask<InputObject, Void, OutputObject>{
private Context context;
private ProgressDialog dialog;

public MyPreloader(Context context){
    this.context = context;
}

@Override
protected void onPreExecute() {
    dialog = new ProgressDialog(context);
    dialog.setMessage("Please wait...");
    dialog.setIndeterminate(true);
    dialog.show();
    super.onPreExecute();
}   

@Override
protected ResponseBase doInBackground(InputObject... params) {
InputObject input = params[0]; 
//some code for background work
    }

@Override
protected void onPostExecute(OutputObject result) {
    if (dialog.isShowing()) {
        dialog.dismiss();
    }
    super.onPostExecute(result);
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!