Android-使用query()时光标如何从数据库加载数据?

Android-使用query()时光标如何从数据库加载数据?,android,sqlite,Android,Sqlite,主要问题 游标如何从SQlite检索数据?它是否动态引用数据库文件地址?还是将其完全加载到内存中?虽然我知道dalvik虚拟机是基于地址的,而且第一个假设更可能是正确的,因为RAM内存和电话存储的性质几乎相同 所以我的主要问题是知道数据是如何加载的?从加载到内存?还是仅仅寻址到数据库文件内容 澄清:(此示例仅用于澄清,您可以跳过) 提出的问题是: 我创建了一个从sqlite加载数据并在listview中显示的应用程序。数据库是使用用户数据按时间增长的。现在,当数据库变大时,是否需要像使用加载更多

主要问题

游标如何从SQlite检索数据?它是否动态引用数据库文件地址?还是将其完全加载到内存中?虽然我知道dalvik虚拟机是基于地址的,而且第一个假设更可能是正确的,因为RAM内存和电话存储的性质几乎相同

所以我的主要问题是知道数据是如何加载的?从加载到内存?还是仅仅寻址到数据库文件内容

澄清:(此示例仅用于澄清,您可以跳过)

提出的问题是:

我创建了一个从sqlite加载数据并在listview中显示的应用程序。数据库是使用用户数据按时间增长的。现在,当数据库变大时,是否需要像使用加载更多分页一样将数据加载到listview?或者在一个地方装载它们是真的? 尽管分页有助于提高响应速度,但在尝试将数据导出为xls或pdf格式时,是否可以将光标检索到所有数据库并以xls或pdf格式保存数据


android的消息应用程序在一个地方加载所有消息,即使我在一个线程中有3000条消息,也不会引起任何问题。

似乎
光标的数据存储在内存或某种缓存文件中(它的实现细节如我正确提到的)。
有两种可能的方法来证明/显示它不是原始数据库文件的原因。我相信也应该有一些更理论的解释

  • 查看
    SQLiteCursor
    源代码(可在sdk平台安装中获得):它基于
包含多个光标行的缓冲区

游标窗口最初在本地创建和使用时是读写的。 当发送到远程进程(通过将其写入包裹)时,远程进程 进程接收光标窗口的只读视图。典型的 游标窗口将由生产者分配,填充数据,并 然后发送给消费者阅读

此外,从源代码看,该窗口似乎包含该缓冲区中的所有数据

  • 使用带有大量记录的测试数据库创建测试应用程序。请求所有记录并显示在列表中。当列表显示时,请保持不断更改的db内容,并注意列表内容没有更改(我假设不使用requery()和相关的不推荐内容)

类似的问题:谢谢。但这似乎与我的问题不太相似。他们在那里谈论数据库优化。但使用“分页”和“加载更多”的应用程序又如何呢?他们只是在浪费时间吗?因为他们可以优化他们的数据库?我说的不是从网络加载数据的应用程序,而是像“viber”这样的应用程序,它从数据库加载对话,但也使用“加载更多”。无论如何我更新了我的问题以消除歧义。消息应用程序不会同时在屏幕上显示3000条消息。感谢您的评论。是的,我知道adapterView以及它显示listview视图的方式。但是,游标中的数据从何而来?游标本身保存数据?或者通过访问数据库文件动态加载它们?内存或文件。。这就是问题所在:)——