如果一个应用程序有一个包含大量行的本地数据库(我想是成百上千行,但为了论证我们假设是一百万或十亿行),将从 sql 查询返回所有行到游标并使用它来填充 ListView 会对性能产生负面影响?
请注意 (1) 我不是在谈论返回所有列,这在此处讨论:
另外 (2),我不是在谈论与创建太多 View 相关的性能问题。我了解此处讨论的回收 View 的重要性:
- > Performance issue with ListView and CursorAdapter for large amount of data
- > HowTo: ListView, Adapter, getView and different list items’ layouts in one ListView
还有 (3),我不是在谈论从网络速度较慢的远程服务器获取数据。该应用程序有自己的本地数据库。
所以基本上我是在问游标适配器是否内置了任何东西来继续查询数据库,或者它是否一次返回所有数据。也就是说,我是否应该一次返回 100 行,然后在用户滚动到最后一行时重新查询数据库以获取接下来的 100 行?
在我的特殊情况下,我正在制作消息传递应用程序来保存所有以前发送的消息的历史记录。用户可以在 ListView 中查看所有已发送的消息。
最佳答案
请通过此链接(答案)了解尝试从表中获取大量行时可能出现的一些性能问题。
Android SQLite and huge data sets
此外,我建议分部分检索结果并稍后使用 cursorjoiner。这是一个关于如何使用它的很好的例子。
http://chariotsolutions.com/blog/post/android-advanced-cursors/
关于android - 与从大型数据库中选择所有行以填充 ListView 相关的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27808925/