sqlite cursor.close需要太多时间

时间:2012-08-24 09:04:37

标签: android sqlite

我的代码有一些sqlite运算符。我执行了一个sql,它有 500行。执行和获取行的时间非常短,但是当我调用cursor.close()函数时,它需要 10秒

如何减少这段时间的消耗?

Cursor cursor = database.rawQuery(sql, null);
while(cursor.moveToNext()){
     String str1 = cursor.getString(0);
     String str2 = cursor.getString(1);
     System.out.println(str1+" and "+str2);
}
cursor.close();  // this line takes 13 seconds. but above code takes only 200 ms

代码是这样的

1 个答案:

答案 0 :(得分:1)

我建议您使用Activity Class的方法startManagingCursor(Cursor c)。根据活动生命周期让Lets Activity为您处理Cursor。

表单文档StartManagingCursor ...

public void startManagingCursor (Cursor c)
Since: API Level 1

不推荐使用此方法。 改为使用新的CursorLoader类和LoaderManager;这也可以通过Android兼容包在旧版平台上使用。

此方法允许活动根据活动的生命周期为您管理给定的Cursor生命周期。也就是说,当活动停止时,它将自动调用给定Cursor上的deactivate(),稍后重新启动它将为您调用requery()。当活动被销毁时,所有托管游标将自动关闭。

如果您定位 HONEYCOMB 或更高版本,请改为使用LoaderManager,而不是getLoaderManager()