AsyncTask onPostExecute не возвращается к предыдущему действию - PullRequest
2 голосов
/ 15 августа 2011

У меня есть две AsyncTasks, которые я использую, одна вызывается после того, как диалог возвращается в FragmentActivity, и после .execute I вызывается код.Другой .execute вызывается как раз в if...else.Тот, который вызывается после другого диалога, возвращает, делает то, что должен, он выполняет, при пост-выполнении он возвращает действие назад к предыдущему, и все работает.

Другой onPostExecute никогда не вызывается.Я сделал точку останова в doInBackground, который выполняет и возвращает нуль, как и другой, но onPostExecute никогда не происходит, есть ли проблема с наличием слишком большого числа AsyncTasks в одной FragementActivity или слишком большого количества вызовов для выполнения?Я застрял и надеюсь, что это что-то глупое, что я просто не вижу, поэтому я публикую код, но я действительно не могу понять, почему 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;
            }         
        }

1 Ответ

3 голосов
/ 15 августа 2011

Ваш метод onPostExecute () никогда не вызывается, потому что вы не переопределяете метод onPostExecute () базового класса. Подпись должна быть защищена void onPostExecute (Void result). Если бы вы использовали @Override, компилятор сказал бы вам об этой проблеме:)

...