2 回答
TA贡献1877条经验 获得超1个赞
将在单独的线程上执行。您的代码将执行 AsyncTask,并将立即进入循环,而不管 AsyncTask 是否完成其执行。我将提到一些你可以处理这个问题的方法。AsyncTask
for
方法 1:您可以将循环移动到 AsyncTask 本身内部。这将确保 for 循环在从 db 获取数据后执行。for
方法 2:允许在 UI 线程上运行此查询。AFAIK,如果明确提及,则房间允许在UI线程上运行查询。
方法 3:使用回调。在 AsyncTask 完成后,您可以使用回调(使用接口实现),这将使您的活动/片段知道 AsyncTask 已完成,您可以继续工作。
TA贡献1995条经验 获得超2个赞
顾名思义,正在异步执行 ...这正是返回那里的原因 - 因为你从来没有分配过记录。AsyncTaskjourneys.size()0
AsyncTask.execute(new Runnable() {
@Override
public void run() {
/* first retrieve the data */
journeys = db.journeyDao().getAllJourneys();
for(int i = 0; i < journeys.size(); i++){
listOfJourneys.add(String.format("Journey %d", i));
}
/* and then notify the adapter */
arrayAdapter.notifyDataSetChanged();
}
});
请参阅文档。
添加回答
举报