ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2019-06-09 19:12:12  阅读:251  来源: 互联网

标签:android android-listview android-sqlite android-cursor android-memory


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

>将数据预取到List – 执行查询,为每行创建Model对象,然后将其添加到List并关闭Cursor,然后使用List填充ListView.
>没有List和Model对象 – 执行查询并按照Cursor使用moveToFirst,moveToLast,move,根据需要填充ListView.

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

解决方法:

Cursor方法更节省内存:

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

另一方面,如果您使用CursorAdapter,每当您必须使用数据填充列表项时,您将获得Cursor,其中包含该行的数据,您只需选择实际需要的列数据即可.显示在列表项中.无需创建1000个模型对象.

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

标签:android,android-listview,android-sqlite,android-cursor,android-memory
来源: https://codeday.me/bug/20190609/1206824.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有