我的代码有一些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
代码是这样的
答案 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()
。