对于 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 。
答案 0 :(得分:1)
你正在重载onPostExecute
方法并且它没有被使用。使用此:
@Override
protected void onPostExecute(Object o) {
super.onPostExecute(o);
Log.d("actions", "onPostExecute");
if (this.dialog.isShowing())
this.dialog.dismiss();
}
注意 @Override
注释,在这样的时候非常有用。如果您尝试覆盖的方法不存在,它将显示错误。