我一直在浏览这个我找不到适合我的问题的答案。但我想执行 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();
}
}
答案 0 :(得分:0)
根据documentation,如果任务被取消,则不会调用该方法。因此,由于返回空列表,您的任务可能会被取消?或者onPostExecute(result)不起作用,因为result是一个空列表?您可以通过覆盖onCancel()来捕获它。
顺便说一句,您确实从主UI线程中调用了异步任务,并使用getMealsByDayConnection.execute()方法启动任务,对吗?
答案 1 :(得分:0)
我认为你用
调用asyncTaskgetMealsByDayConnection.doInBackground(params);
如果你这样执行,任务将在主线程中执行,而doInBackground()函数将单独执行。
你应该像这样执行asynctask,
getMealsByDayConnection.execute();