主要问题
游标如何从SQlite检索数据?它是否动态引用数据库文件地址?或者将它完全加载到内存中?虽然我知道dalvik虚拟机是基于地址的,但第一个假设更可能是真的,因为RAM内存和手机存储的性质几乎相同。
所以我的主要问题是知道如何加载数据?从加载到内存?或只是寻址数据库文件内容?
澄清:(样本只是为了澄清。你可以跳过它)
提出的问题是:
我创建了一个从sqlite加载数据的应用程序,并在listview中显示它们。数据库使用用户数据逐渐增长。现在,当数据库变大时,是否需要以使用加载更多或分页的方式将数据加载到listview?或者它真的把它们装在一个地方? 虽然分页对响应性更好,但是,当尝试将数据导出为xls或pdf格式时,是否可以将光标检索到所有数据库并以xls或pdf格式保存数据?
android的消息传递应用程序在一个地方加载所有消息,即使我在一个帖子中有3000条消息也没有问题。
答案 0 :(得分:2)
似乎Cursor
的数据存储在内存或某种缓存文件中(正如我已正确提到的那样,它的实现细节)。
有两种方法可以证明/显示它不是原始数据库文件的原因。我确信还应该有一些理论解释。
SQLiteCursor
来源(可在您的sdk平台安装中找到):它基于CursorWindow 包含多个游标行的缓冲区。
最初在本地创建和使用时,CursorWindow是读写的。 当发送到远程进程(通过将其写入包)时,远程进程 进程接收光标窗口的只读视图。通常是 光标窗口将由生产者分配,填充数据,和 然后发送给消费者阅读。
此外,从源代码看, Window 包含该缓冲区中的所有数据。