【发布时间】:2014-02-25 02:25:35
【问题描述】:
我正在制作我的第一个 android 应用程序,我首先学习了一些 sqlite 教程,这些教程教我使用扩展 SQLiteOpenHelper 的 databaseHelper。所以我的 databaseHelper 确实扩展了 SQLiteOpenHelper。我在 Logcat 中收到了一个 sqlite 连接泄漏警告,所以想要一些关于如何解决这个问题的建议。
我得到这个错误:
02-01 21:39:50.740: W/SQLiteConnectionPool(32061): A SQLiteConnection object for database '/data/data/com.btf271.fashionassistant/databases/clothingManager' was leaked! Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
在发生泄漏时调用的我的 databaseHelper 函数:
public List<Sticker> getObjectsByGenderAndCategory(String gender, String category) {
List<Sticker> objects = new ArrayList<Object>();
String selectQuery = String.format(
"SELECT * FROM %s WHERE %s = \"%s\" AND %s = \"%s\"",
TABLE_OBJECT, KEY_GENDER, gender, KEY_CATEGORY, category);
Log.e(LOG, selectQuery);
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.rawQuery(selectQuery, null);
try{
// looping through all rows and adding to list
if (c.moveToFirst()) {
do {
Object o = createClothingItemJavaObject(c);
// adding to object list
objects.add(o);
} while (c.moveToNext());
}
}finally {
c.close();
db.close();
}
return objects;
}
我找到了this which I will try tomorrow. It's late。
谢谢。
【问题讨论】:
标签: java android sqlite memory-leaks sqliteopenhelper