0

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

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

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

4

1 回答 1

1

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

所以第一个moveToNext()电话是一个很慢的电话。您可能想getCount()在后台线程中添加一个调用。

于 2013-09-13T23:43:26.103 回答