我正在使用两个AsyncTasks,一个在FragmentActivity中返回一个对话框后被调用,并且在我调用的.execute之后有代码。另一个.execute
仅在if...else
中调用。在另一个对话框返回之后调用的那个,执行它应该执行的操作,执行它,在执行后它将活动弹回到前一个,一切正常。
另一个onPostExecute
从未被调用过。我在执行并返回null的doInBackground
中执行了一个断点,就像其他人一样,但onPostExecute从未发生过,在一个FragementActivity中有太多的AsyncTasks,或执行的调用太多都有问题?我被困住了,并希望它有些愚蠢,我只是没有看到,所以我发布了代码,但我真的无法弄清楚为什么onPostExecute永远不会在AddEventWorker
中调用,而是在AddEventFromDialogWorker
中调用。我测试应用程序的方式就是这样,AddEventFromDialogWorker被调用,工作,然后AddEventWorker的任何东西都不起作用(确实是doInBackground
而不是onPostExecute
)。
我可以尝试任何想法或途径吗?
private class AddEventWorker extends AsyncTask<Void, Void, Void>{
protected void onPostExecute() {
getFragmentManager().popBackStack();
}
@Override
protected Void doInBackground(Void... params) {
mGoogleApi.addEvent(mSession, allGoogleAccounts.get(0).getGoogleCalendarName());
return null;
}
}
private class AddEventFromDialogWorker extends AsyncTask<String, Void, Void>{
protected void onPostExecute() {
Toast.makeText(mContext, "Event added to google calendar!", Toast.LENGTH_SHORT);
getFragmentManager().popBackStack();
}
@Override
protected Void doInBackground(String... params) {
mGoogleApi.addEvent(mSession, params[0]);
return null;
}
}
答案 0 :(得分:3)
永远不会调用onPostExecute()方法,因为您没有覆盖基类的onPostExecute()方法。签名应该受保护void onPostExecute(Void结果)。如果您使用@Override,编译器会告诉您有关此问题的信息:)