理论教育 提高Cursor查询数据的性能

提高Cursor查询数据的性能

时间:2023-06-19 理论教育 版权反馈
【摘要】:当解析Cursor对象时,如果只是解析一行,可通过方法moveToFirst()定位到第一行,再解析。当Cursor中的数据只有一行时,代码优化工作会比较省事,我们基本上不用担心会因代码不好而影响性能。在定位后解析Cursor时,我们一般的做法是首先通过方法getColumnIndex获得列的索引值,然后再通过列的索引值获得对应的数据。但是当联系人数据较大时,运行速度会相当慢。

提高Cursor查询数据的性能

在Android系统中,查询数据的功能是通过类Cursor实现的,使用方法sqlitedatabase.query()就能得到Cursor对象,cursor对是代表每行的集合。当解析Cursor对象时,如果只是解析一行,可通过方法moveToFirst()定位到第一行,再解析。如果是多于一行的,则可以在while循环条件里加上moveToNext()函数定位后再解析。

当Cursor中的数据只有一行时,代码优化工作会比较省事,我们基本上不用担心会因代码不好而影响性能。但是当里面的数据量很多时,如果没有优化代码,则对解析的速度会带来很大的影响。

在定位后解析Cursor时,我们一般的做法是首先通过方法getColumnIndex(String columnName)获得列的索引值,然后再通过列的索引值获得对应的数据。就像如下代码中这样,实现了对联系人部分数据的解析。

上述代码没有任何错误,最后解析出来的结果也是完全正确。但是当联系人数据较大时,运行速度会相当慢。我们可以用这种代码写出来的程序跟系统自带的通讯录(或者QQ通讯录)比较一下三百多条联系人的数据就知道有多慢了。(www.daowen.com)

在进行优化时,我们只需要稍稍的做一下改变,执行速度将会有很大的提升。改变如下:

经过优化以后,可以再测试一下三百多条联系人的数据,此时会基本接近系统查询联系人的速度。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈