0

我的代码有一些 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

代码是这样的

4

1 回答 1

1

我建议你使用startManagingCursor(Cursor c)活动类的方法。让活动根据活动生命周期为您处理光标..

表单文档StartManagingCursor ...

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

此方法已弃用。 将新的 CursorLoader 类与 LoaderManager 一起使用;这也可以通过 Android 兼容包在旧平台上使用。

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

如果您的目标是HONEYCOMB或更高版本,请考虑改用LoaderManager,可通过getLoaderManager().

于 2012-08-24T09:23:55.940 回答