与从大型数据库中选择所有行以填充 ListView 相关的性能问题

Performance issues related to selecting all rows from a large database to populate a ListView

如果一个应用程序有一个包含大量行的本地数据库(我想是成百上千行,但为了争论起见,假设是一百万或十亿行),return将 sql 查询中的所有行添加到游标并使用它来填充 ListView 会对性能产生负面影响?

请注意 (1) 我不是在谈论 returning 所有列,这在此处讨论:

另外 (2),我不是在谈论与创建太多视图相关的性能问题。我理解这里讨论的回收视图的重要性:

并且 (3),我不是在谈论从网络速度较慢的远程服务器获取数据。该应用程序有自己的本地数据库。

所以基本上我是在问游标适配器是否有任何内置的东西来继续查询数据库,或者 return 一次查询所有数据。也就是说,我是否应该 return,比如说,一次 100 行,然后在用户滚动到最后一行时重新查询数据库以获取接下来的 100 行?

在我的特殊情况下,我正在制作消息传递应用程序来保存所有以前发送的消息的历史记录。用户可以在 ListView 中查看所有已发送的消息。

请仔细阅读此 link(答案)以了解尝试从 table.

中获取大量行时可能出现的一些性能问题

Android SQLite and huge data sets

此外,我建议分部分检索结果并稍后使用 cursorjoiner。这是一个关于如何使用它的很好的例子。

http://chariotsolutions.com/blog/post/android-advanced-cursors/