【问题标题】:sqlite cursor.close takes too much timesqlite cursor.close 需要太多时间
【发布时间】:2012-08-24 17:33:34
【问题描述】:

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

代码是这样的

【问题讨论】:

  • 你试过关闭数据库对象而不是关闭游标吗??
  • 不,我不尝试。但是,我需要数据库对象来进行下一个查询。

标签: android sqlite


【解决方案1】:

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

表单文档StartManagingCursor...

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 2011-09-23
    • 2013-05-19
    • 2011-06-03
    相关资源
    最近更新 更多