当前位置:首页 > 数据库 > SQlite

Android SQLiteDatabase SELECT查询需要很长时间

我在TABLE_CONTACT中有大约1500条记录.我获取联系人的代码:

public ArrayList<SBContact> getAllContacts() {
    SQLiteDatabase database = dbHelper.getWritableDatabase();
    ArrayList<SBContact> mContacts = new ArrayList<SBContact>();
    String selectQuery = "SELECT  * FROM " + SBDatabaseHelper.TABLE_CONTACT;
    Cursor cursor = database.rawQuery(selectQuery, null);

    if (cursor.moveToFirst()) {
        do {
            SBContact result = new SBContact(cursor.getString(cursor.getColumnIndex(SBDatabaseHelper.CONTACT_NUMBER)),
                    cursor.getString(cursor.getColumnIndex(SBDatabaseHelper.CONTACT_NAME)), cursor.getInt(cursor.getColumnIndex(SBDatabaseHelper.EXITS_USER)));
            mContacts.add(result);
        } while (cursor.moveToNext());
    }
    return mContacts;
}

问题是:第一次运行此方法大约需要15毫秒. 5秒后,我再次运行此方法,大约需要20秒.

以类似的方式,在第一次调用之后(15秒后),再次运行方法,大约需要10秒钟. 2分钟后,再次运行此方法,第一次运行大约需要15毫秒.

此时,没有其他线程对数据库进行读/写查询.

我不明白SQLiteDatabase的作用.是否需要时间释放内存或执行某些操作?

已编辑
抱歉,这不是SQLiteDatabase的问题.有关此案例的更多详细信息,请参见我的回答.

解决方法:

每次查询后关闭光标


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!