2011-12-21 31 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