【发布时间】:2014-12-10 19:44:09
【问题描述】:
我有一个使用数据库的 Android 应用程序。我创建的 db 类将迭代数据库并使用单独的类来“HOLD”?每一行。
public List<Poster> getAllPosters() {
List<Poster> posterList = new ArrayList<Poster>();
// Select All Query
String selectQuery = "SELECT * FROM " + "posters";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Poster poster = new Poster(Integer.parseInt(cursor.getString(0)),Integer.parseInt(cursor.getString(1)),Integer.parseInt(cursor.getString(2)),cursor.getString(3),cursor.getString(4),cursor.getString(5),cursor.getString(6),cursor.getString(7),cursor.getString(8));
// Adding contact to list
posterList.add(poster);
} while (cursor.moveToNext());
}
db.close(); // Closing database connection
// return contact list
return posterList;
}
海报课如您所愿。它有一个构造函数,其中包含与列相关的每个变量以及设置和获取每个列值的方法。
那么现在每一行是它自己的可以随时访问的对象,还是它是作为对象并且包含所有行的海报类?
此外,在应用终止或被新的 Poster 实例覆盖之前,此对象是否在内存中?
【问题讨论】:
-
您返回
Poster的列表。只要有对它们的引用,就可以使用该列表及其引用。在最后一个引用消失后,它就有资格进行 GC; GC 发生的时间取决于。