我正在使用两个 AsyncTasks,一个在 FragmentActivity 中返回对话框后调用,并且在我调用的 .execute 之后有代码。另一个 .execute
仅在 if...else
中调用。在另一个对话框返回后调用的那个,执行它应该做的事情,它执行,在执行后它将 Activity 弹回前一个 Activity ,一切正常。
另一个onPostExecute
永远不会被调用。我在 doInBackground 中做了一个断点,该断点执行并返回 null,就像另一个断点一样,但 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;
}
}
最佳答案
您的 onPostExecute() 方法永远不会被调用,因为您没有重写基类的 onPostExecute() 方法。签名应受到保护 void onPostExecute(Void result)。如果您使用@Override,编译器会告诉您这个问题:)
关于android - AsyncTask onPostExecute 不会返回到上一个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7060263/