主要问题
光标如何从sqlite检索数据?它是否动态引用数据库文件地址?或者把它完全载入记忆?尽管我知道dalvik虚拟机是基于地址的,而且第一个假设更可能是正确的,因为ram内存和电话存储的性质几乎相同。
所以我的主要问题是知道数据是如何加载的?从载入到记忆?或者只是寻址到数据库文件内容?
澄清:(样品仅用于澄清。你可以跳过它)
问题的提出是:
我已经创建了一个应用程序,它从sqlite加载数据并在listview中显示它们。随着时间的推移,数据会随着用户数据的使用而增长。现在,当数据库变大时,是否需要像使用load more或分页那样将数据加载到listview?还是把它们放在一个地方?
尽管分页更有利于响应,但当尝试将数据导出为xls或pdf格式时,是否可以将光标检索到所有数据库并将数据保存为xls或pdf格式?
android的消息应用程序在一个地方加载所有消息,即使我在一个线程中有3000条消息,也没有问题。

最佳答案

似乎Cursor的数据存储在内存或某种缓存文件中(正如我正确提到的,它是实现细节)。
有两种可能的方法来证明/显示为什么它不是原始的db文件。我相信也应该有更理论的解释。
查看SQLiteCursor源代码(在您的sdk平台安装中提供):它基于CursorWindow这是
包含多个光标行的缓冲区。
游标窗口最初在本地创建和使用时是读写的。
当发送到远程进程(通过将其写入包)时,远程
进程接收光标窗口的只读视图。通常是
游标窗口将由生产者分配,并填充数据,以及
然后发送给消费者阅读。
另外,从源代码来看,该窗口包含该缓冲区中的所有数据。
使用包含大量记录的测试数据库创建测试应用程序。请求所有记录并显示在列表中。当list显示keep-continuous-changing-db-content时,请注意list-content没有被更改(我假设消除了requery()和相关的不推荐使用的内容)。

10-04 22:25
查看更多