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

标签 android mysql listview

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

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

另外 (2),我不是在谈论与创建太多 View 相关的性能问题。我了解此处讨论的回收 View 的重要性:

还有 (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/

相关文章:

Android MotionLayout 运动交错

android - 将 TextView 的字体设置为 Typeface.NORMAL 没有任何效果,为什么?

mysql - MySQL 中日期之间的总时间

java - 如何处理android中 ListView 项中的复选框事件

自定义 ListView 适配器上的 Android onclick 事件不起作用

android - 对 Callstack 库的 undefined reference 出现问题

android - 停止服务 "handler loop code"不起作用

javascript - 如何使用 LoopBack 3 增加一些数据而不损害一致性?

php - MySQL 去除小数点(.00),如果不是.00则保留小数点

android - 如何在android中长按自定义 ListView 删除项目?