在Android应用程序中,您使用方法ContentResolver.query()来查询URI。结果,您得到一个Cursor对象,然后只需重复执行Cursor.moveToNext()以从数据库中读取数据。

在后台线程(例如query()doInBackground)中执行AsyncTask,但在GUI线程(例如moveToNext)中调用onPostExecute是否可以?

也就是说,是否大部分时间都花在了query()上,所以moveToNext调用是快速的,还是相反,该行为是惰性的并且实际查询执行被推迟到请求数据之前?

最佳答案

在Android中,SQLite游标直到第一个需要知道查询是否返回某些记录的调用才读取数据,然后将所有数据读取到缓存中。

因此,第一个moveToNext()调用速度很慢。
您可能要在后台线程中添加getCount()调用。

09-28 00:01