gpt4 book ai didi

android - 在 Android SQLite 中,直接使用 Cursor 比创建模型对象更节省内存?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:47:41 24 4
gpt4 key购买 nike

在大多数 Android 示例代码中,通过两种方式从 SQLite 数据库填充 ListView

  1. Prefetch data to List - 执行查询,为每一行创建 Model 对象,然后将其添加到 List关闭 光标,然后用 List 填充 ListView

  2. 没有 List 和 Model 对象 - 使用 moveToFirst 跟随 Cursor 执行查询并填充 ListView>、moveToLast、根据需要移动

现在我想知道,在 Android 中,上述哪种方法的内存效率更高?

最佳答案

Cursor 方法的内存效率更高:

假设您的数据库中有 1000 个条目,并且您有一个可以同时显示 10 个条目的 ListView。如果你首先创建一个列表,你将不得不创建 1000 个模型对象(每个模型对象又由几个对象组成,具体取决于你的表的列数)并且 ListView 创建额外的 10 个 View (实际上更多,取决于在列表的布局上)用于显示 10 个项目。现在,当用户滚动列表时,在您的适配器中,您最终会将数据从您的模型对象复制到当前在 View 中的列表项 View 。

另一方面,如果您使用 CursorAdapter,每当您必须用数据填充列表项时,您会得到一个 Cursor,该 Cursor 正好保存该行的数据,您可以简单地选择您实际需要在列表项中显示的列的数据。无需创建 1000 个模型对象。

从代码可读性的角度来看,模型方法会更好,因为使用 Cursors 的级别非常低,您需要知道数据库中列的名称等等。

关于android - 在 Android SQLite 中,直接使用 Cursor 比创建模型对象更节省内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26943924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com