首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android SQLite游标是否同时将所有记录加载到内存中?

Android SQLite游标是否同时将所有记录加载到内存中?
EN

Stack Overflow用户
提问于 2015-07-16 21:45:39
回答 3查看 3.3K关注 0票数 13

Android SQLite游标是否将查询的所有数据加载到内存中,或者是否有某种优化策略作为其实现的一部分?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-16 22:00:20

当您浏览“窗口”时,SQLiteCursor会用它填充“窗口”。我记得窗口大小是1MB,但我不能指出备份该回忆的特定代码。因此,对于小型查询,一旦开始访问行和列,SQLiteCursor就会将整个结果集保存在内存中。

票数 13
EN

Stack Overflow用户

发布于 2016-01-26 11:37:38

感谢CommonsWare关于Window术语的介绍,所以我通过导航这些类SQLiteCursor -> AbstractWindowedCursor -> CursorWindow再次逆转了Android。下面是CursorWindow构造函数:

代码语言:javascript
复制
 public CursorWindow(String name) {
        mStartPos = 0;
        mName = name != null && name.length() != 0 ? name : "<unnamed>";
        if (sCursorWindowSize < 0) {
            /** The cursor window size. resource xml file specifies the value in kB.
             * convert it to bytes here by multiplying with 1024.
             */
            sCursorWindowSize = Resources.getSystem().getInteger(
                com.android.internal.R.integer.config_cursorWindowSize) * 1024;
        }
        mWindowPtr = nativeCreate(mName, sCursorWindowSize);
        if (mWindowPtr == 0) {
            throw new CursorWindowAllocationException("Cursor window allocation of " +
                    (sCursorWindowSize / 1024) + " kb failed. " + printStats());
        }
        mCloseGuard.open("close");
        recordNewWindow(Binder.getCallingPid(), mWindowPtr);
    }

如您所见,sCursorWindowSizeCommonsWare提到的大小:

代码语言:javascript
复制
sCursorWindowSize = Resources.getSystem().getInteger(
                com.android.internal.R.integer.config_cursorWindowSize) * 1024;

因为我现在的版本是Android SDK 23.0.1,所以com.android.internal.R.integer.config_cursorWindowSize的值是2048。意思是2MB。我没有另一个版本的SDK来检查。

票数 13
EN

Stack Overflow用户

发布于 2015-07-16 21:52:20

游标并不包含内存中的所有结果,但它有返回查询的总数(通过getCount)。当您迭代结果时,它会获取条目(我猜不是一个接一个,但可能是块)。我很确定在这个级别上有优化。一旦您完成了它,您必须关闭它-否则,为什么系统将保持打开后,查询已经完成。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31465069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档