熙傢伙,的AsyncTask,插入,在Android中選擇執行的順序錯誤
我目前正在調試從一個數據庫retreives某些數據的應用程序,它西港島線在ListView後顯示。然而,它使用額外的方法在日期對這些結果進行排序,並將其顯示在名爲「Gesorteerd op datum」的類別中,其中包含子月份與其中的月份。例如:
Link screenshot because i miss 1 reputation to upload a image.
正如你可以看到打開的部分是靜態的,我使用的一個功能,選擇所有一定的時間週期之間的數據,然後將這些整理數月,並插入這些回數據庫讓事情儘可能動態(我也插入了定製的「Gesorteerd op Datum」和幾個月)。然而,當第一次使用這個應用程序,你打開這個片段時,「基準上的Gesorteerd」部分完全缺失。然而,按回去,然後再次進入那裏。
所以問題是,插入需要更長的時間才能完成,然後選擇和顯示所有列表項的功能。我試着用2個Asynctasks修復這個問題。
第一個asynctask:DoInBackground函數插入「Gesorteerd op datum」和al子月,它使用一個偵聽器,以便它在下一個事情完成之前不會做任何事情。然後onPostExecute運行一個顯示分類的函數。但是在這裏它已經出錯了,因爲「gesorteerd op datum」沒有被添加到數組中,以後用於顯示列表視圖。
第二個Asynctask:DoInBackground使用一個函數根據日期獲取並排序事件,然後插入它們。然後onPostexecute獲取包括「gesorteerd op datum」事件在內的所有事件,並在下面的列表視圖中顯示它們。如上所述,它沒有做它應該做的事情。
任何人都知道它出錯的地方?因爲在閱讀Asynctask文檔之後,我明白它在第一次插入完成後不應該加載分類。但它仍然會提早加載它們。
/*
* Insert Static categories into database.
* Easier to manipulate and prevents unnecessary code.
*/
class Static extends AsyncTask<Object, Object, Object>{
@Override
protected Object doInBackground(Object... params) {
// TODO Auto-generated method stub
insertStaticData();
return null;
}
@Override
protected void onPostExecute(Object result)
{
getAllStaticData();
new async().execute();
}
}
/*
* Insert Static categories into database.
* Easier to manipulate and prevents unnecessary code.
*/
class async extends AsyncTask<Object, Object, Object>{
@Override
protected void onPreExecute() {
super.onPreExecute();
toggleLoadingView(mLoading, mExpandableListView, mRootView, true);
}
@Override
protected Object doInBackground(Object... params) {
// TODO Auto-generated method stub
if (sCurrentRadius != 0 && mLastLocation != null) {
loadCursor(mLastLocation, sCurrentRadius);
} else{
loadCursor();
}
return null;
}
@Override
protected void onPostExecute(Object result)
{
getAllDynamicData();
}
}
這些是我的Asyncs編輯後,從下面的建議。他們現在顯示他們,但它不會顯示它應該顯示的所有月份。當我重新加載它顯示它們。
爲什麼不在運行select之前,在初始AsyncTask的onPostExecute中選擇數據,這樣你知道線程已經完成? – LokiSinclair 2014-10-29 09:44:11
你是什麼意思?因爲我最初創建靜態分類並插入它們。然後在onPostExecute它只獲取Categorys。之後,我開始第二次異步獲取和排序日期的事件,然後在onPostExecute我顯示在分類事件。 – 2014-10-29 09:48:35
我明白你的意思了。我嘗試過,但不會顯示。 – 2014-10-29 10:16:32