我在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)!