AsyncTask onPostExecute 未被调用

问题描述 投票:0回答:3

我正在从事的项目稍微复杂一些,但我做了这个简单的测试来尝试找出我的代码出了什么问题。 进度对话框永远不会消失。 我曾经遇到过他们没有返回 null 的情况。 '

public class SyncTestActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        new mTask(this).execute();
    }

    public class mTask extends AsyncTask<Void, Void, Void> {

        Context mContext;

        ProgressDialog progressDialog;

        public mTask(Context aContext) {
            mContext = aContext;
        }

        @Override
        public void onPreExecute() {

            progressDialog = new ProgressDialog(mContext);
            progressDialog.setMessage("New...");
            progressDialog.show();
        }

        @Override
        public Void doInBackground(Void... params) {
            return null;
        }  

        public Void onPostExecute(Void... params) {
            progressDialog.dismiss();
            return null;


        }
    }

}
android android-asynctask
3个回答
14
投票

参数错误,用这个:

    @Override
    protected void onPostExecute(Void result) {
        progressDialog.dismiss();
        return;

    }

5
投票

我同意 Cesar 和 Shailendra 的答案,但让我对此做一些改进:

    @Override
    protected void onPostExecute(Void result) {

      if(progressDialog.isShowing())
      {
        progressDialog.dismiss();
      }
        return;

    }

2
投票

@Override
之前缺少
onPostExecute
符号。另外
return null
也不是必需的。

© www.soinside.com 2019 - 2024. All rights reserved.