在Android应用程序中,您使用方法ContentResolver.query()
来查询URI。结果,您得到一个Cursor
对象,然后只需重复执行Cursor.moveToNext()
以从数据库中读取数据。
在后台线程(例如query()
的doInBackground
)中执行AsyncTask
,但在GUI线程(例如moveToNext
)中调用onPostExecute
是否可以?
也就是说,是否大部分时间都花在了query()
上,所以moveToNext
调用是快速的,还是相反,该行为是惰性的并且实际查询执行被推迟到请求数据之前?
最佳答案
在Android中,SQLite游标直到第一个需要知道查询是否返回某些记录的调用才读取数据,然后将所有数据读取到缓存中。
因此,第一个moveToNext()
调用速度很慢。
您可能要在后台线程中添加getCount()
调用。