使用Sqlite时,有时有下面的异常:Finalizing a Cursor that has not been deactivated or closed。 主要原因是游标cursor使用后没有关闭 public List<Subject> getAllSubject(Context context) { List<Subject> Subjects = new ArrayList<Subject>(); // sqLiteOpenHelper = new HomeworkSQLiteOpenHelper(context); // database = sqLiteOpenHelper.getWritableDatabase(); database = HomeworkSQLiteOpenHelper.getInstance(context) .getWritableDatabase(); String sql = "select * from " + DbData.SUBJECT_DB_TABLE_NAME; Cursor cursor = database.rawQuery(sql, null); while (cursor.moveToNext()) { Subject Subject = new Subject(); Subject.setId(cursor.getInt(0)); Subject.setName(cursor.getString(1)); Subjects.add(Subject); } cursor.close(); closeAll(); return Subjects; }