Android AsyncTask onPostExecute未被触发

时间:2015-01-16 19:41:13

标签: java android android-asynctask

对于 AsyncTask

,我通常会发生以下情况
private class backgroundTask extends AsyncTask<Object, Object, Object> {
    protected void onPreExecute() {
        this.dialog.setMessage("Doing stuff...");
        this.dialog.show();
    }

    @Override
    protected Object[] doInBackground(Object... params) {
        // stuff happens here
        ResultsObject results = new ResultsObject(processValue);
        Object[] values = new Object[2];
        values[0] = "STATUS STRING";
        values[1] = results;
        return values;
    }

    protected void onPostExecute(Object... result) {
        Log.d("actions", "onPostExecute");
        if (this.dialog.isShowing())
            this.dialog.dismiss();
    }
}

但是, onPostExecute 似乎没有被触发。我可以验证直到 doInBackground 的所有内容都会执行返回调用。这必须是一个非常简单的东西,我在这里失踪,但我很难过。我在同一个项目中有其他AsyncTasks,我可以轻松到达 onPostExecute

1 个答案:

答案 0 :(得分:1)

你正在重载onPostExecute方法并且它没有被使用。使用此:

@Override
protected void onPostExecute(Object o) {
    super.onPostExecute(o);
    Log.d("actions", "onPostExecute");
    if (this.dialog.isShowing())
        this.dialog.dismiss();
}

注意 @Override注释,在这样的时候非常有用。如果您尝试覆盖的方法不存在,它将显示错误。