2011-12-21 44 views
0

僅供瞭解。Android JSON解析並插入sqlite

目前我有工作原理是這樣的的AsyncTask:

String doInBackground(Void... params) 
//Downloads a JSON and returns it to the onPostExecute(). 

void onPostExecute(String response) 
//Parses the JSON which has an array of stuff and insert into sqlite. 
Call changeCursosr and notifyDataSetChanged. 

這是處理插入和清爽的列表視圖的正確方法嗎?目前,我在遇到執行後遇到輕微的掛起。我應該解析&在doInBackground中插入數據嗎?

回答

0

onPreExecuteonPostExecute不適合任何過程密集型的東西。他們通常保留用於諸如啓動和停止ProgressDialog的事情。

除了處理來自這些資源的數據外,您還應該在doInBackground內進行網絡調用以及數據庫調用。

+0

應該在onPostExecute中獲取數據和更改光標嗎? – Maurice 2011-12-21 03:02:54

+0

不,取數據應該在'doInBackground'中出現。 – 2011-12-21 20:42:23

0

從的AsyncTask docs

onPostExecute(結果),後臺運算完成後的UI線程調用。後臺計算的結果作爲參數傳遞給此步驟。

由於它是在UI線程中調用的,它本質上是一個阻塞過程。所有繁重的工作應該在doOnBackground完成。

+0

應該在onPostExecute中獲取數據和更改光標嗎? – Maurice 2011-12-21 03:02:47

+0

如果您使用的是CursorAdapter,我會設置查詢(返回遊標)並在postExecute中通知適配器。我不認爲實際的查詢不會執行,直到您返回到主線程重新繪製屏幕。另外,我不確定它是否是必需的,但我總是在新光標上調用「startManagingCursor(cursor)」,以便資源將由標準活動生命週期管理。如果您的目標是定位到Honeycomb或更高版本(ICS),則可能需要查看LoaderManager和CursorLoader以進行光標管理。最後,你總是可以試試看看:) – 2011-12-21 12:49:35