gpt4 book ai didi

android - Android Cursor 的读取是否一直到数据库?

转载 作者:太空宇宙 更新时间:2023-11-03 11:53:53 24 4
gpt4 key购买 nike

我有一种笨重的 Android 应用程序,想确保它永远不会 ANR。

我已经将我的数据库查询从 UI 线程移开(到 AsyncTasks),但我仍然从 ui 线程中的游标读取,因为我认为返回的游标存储在内存中的某个地方,即它的实际读取确实如此不要完全进入数据库。这是正确的还是我真的需要将游标的所有读取也移动到非 UI 线程?

更具体地说:

例如http://developer.android.com/reference/android/database/Cursor.html#getInt(int ) 从内存中读取,还是从实际的 SQLite 数据库中获取某种读取锁。

我猜我的例子中的 Cursor 实现是 SQLiteCursor,因为 ContentProvider 是使用 SQLite 数据库实现的。

最佳答案

当您在 SQLiteDatabase 上调用 query()rawQuery() 时,会立即返回一个 Cursor ,因为实际查询本身会延迟到您开始使用数据。任何操作 Cursor 或需要暗示查询已执行的数据(例如,getCount())的调用都将实际执行查询。因此,最好在后台线程中“触摸”doInBackground() 中的Cursor

不过,从那时起,对于小于 1MB 的结果集,整个结果集都在内存中。

关于android - Android Cursor 的读取是否一直到数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4458373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com