在Android的SQLite的cursor.getCount昂贵的操作 [英] Is SQLite cursor.getCount expensive operation in Android

查看:1274
本文介绍了在Android的SQLite的cursor.getCount昂贵的操作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

SQLite的cursor.getCount()当执行昂贵的操作机器人设备?

这是更快:

 光标光标= db.rawQuery(SQL,NULL);
INT长度= cursor.getCount();
最后的名单,其中,项目>项目=新的ArrayList<项目>(长×2); //需要每行,也许2项

如果(cursor.moveToFirst()){

      //循环槽查询结果
      做 {
...
 

 光标光标= db.rawQuery(SQL,NULL);
最后的名单,其中,项目>项目=新的ArrayList<项目>(); //容量为0默认情况下,在Android

如果(cursor.moveToFirst()){

      //循环槽查询结果
      做 {
 

解决方案

如果你比较执行都需要code样品的时候,你会发现它是相同的,因为<一href="http://grep$c$c.com/file/repository.grep$c$c.com/java/ext/com.google.android/android/2.1_r2/android/database/AbstractCursor.java#AbstractCursor.moveToPosition%28int%29"><$c$c>Cursor.moveToFirst()最终调用 SQLiteCursor.getCount()

Is SQLite cursor.getCount() expensive operation when executed on Android device?

Which is faster:

Cursor cursor = db.rawQuery(sql, null);
int length = cursor.getCount();
final List<Item> items = new ArrayList<Item>(length * 2); // need maybe 2 items per row

if (cursor.moveToFirst()) {

      // loop trough the query result
      do {
...

or

Cursor cursor = db.rawQuery(sql, null);
final List<Item> items = new ArrayList<Item>();  // capacity is 0 by default on android

if (cursor.moveToFirst()) {

      // loop trough the query result
      do {

解决方案

If you compare the time required for both code samples to execute, you'll notice it's the same because Cursor.moveToFirst() is eventually calling SQLiteCursor.getCount()

这篇关于在Android的SQLite的cursor.getCount昂贵的操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆