Android:AsyncTask - 永远不会调用onPostExecute

时间:2014-08-23 02:43:33

标签: java android arraylist android-asynctask

我一直在浏览这个我找不到适合我的问题的答案。但我想执行 onPostExecute ,但它永远不会被调用。

我将 timestamp ,unixtime发送到服务器,然后我得到一个列表(ArrayList)。然后我想在onPostExecute中使用 list 。我确实得到了这份清单。

  • 我发送长期
  • 我想,我想使用该列表。
  • 我想要返回该列表

这就是为什么我做Long&,LongList,ArrayList'

可以使用一点帮助,谢谢!

    private class getMealsByDayConnection extends AsyncTask<Long, ArrayList<CalanderMeal>, ArrayList<CalanderMeal>>          {

    protected ArrayList<CalanderMeal> doInBackground(Long... params) {

        CalendarService service = CalendarServiceFactory.getCalanderService();
        try {
           return service.getMealsByDay(params[0]);
        } catch (IOException e) {
            e.printStackTrace();
        }
    return null;
    }

    @Override
    protected void onPostExecute(ArrayList<CalanderMeal> result){
        CalendarAdapter adapter = null;
        adapter.notifyDataSetChanged();

    }
}

2 个答案:

答案 0 :(得分:0)

根据documentation,如果任务被取消,则不会调用该方法。因此,由于返回空列表,您的任务可能会被取消?或者onPostExecute(result)不起作用,因为result是一个空列表?您可以通过覆盖onCancel()来捕获它。

顺便说一句,您确实从主UI线程中调用了异步任务,并使用getMealsByDayConnection.execute()方法启动任务,对吗?

答案 1 :(得分:0)

我认为你用

调用asyncTask
getMealsByDayConnection.doInBackground(params);

如果你这样执行,任务将在主线程中执行,而doInBackground()函数将单独执行。

你应该像这样执行asynctask,

getMealsByDayConnection.execute();