2 回答

TA貢獻1877條經驗 獲得超1個贊
將在單獨的線程上執(zhí)行。您的代碼將執(zhí)行 AsyncTask,并將立即進入循環(huán),而不管 AsyncTask 是否完成其執(zhí)行。我將提到一些你可以處理這個問題的方法。AsyncTask
for
方法 1:您可以將循環(huán)移動到 AsyncTask 本身內部。這將確保 for 循環(huán)在從 db 獲取數據后執(zhí)行。for
方法 2:允許在 UI 線程上運行此查詢。AFAIK,如果明確提及,則房間允許在UI線程上運行查詢。
方法 3:使用回調。在 AsyncTask 完成后,您可以使用回調(使用接口實現),這將使您的活動/片段知道 AsyncTask 已完成,您可以繼續(xù)工作。

TA貢獻1995條經驗 獲得超2個贊
顧名思義,正在異步執(zhí)行 ...這正是返回那里的原因 - 因為你從來沒有分配過記錄。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();
}
});
請參閱文檔。
添加回答
舉報