Erreur "Finalizing a Cursor that has not been deactivated or closed"
Bonjour,
Je viens de remarquer un problème en testant mon application sur l'emulateur 2.1, qui ne se produit pas sur l'emulateur (ou sur un téléphone) en 2.3.3.
Code:
1 2 3
| 06-01 14:13:52.070: I/dalvikvm(466): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@44ef12b8 on compare that has not been deactivated or closed
06-01 14:13:52.070: I/dalvikvm(466): at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
06-01 14:13:52.070: I/dalvikvm(466): at dalvik.system.NativeStart.run(Native Method) |
Pourtant, je ferme bien la bdd après chaque utilisation :
Code:
1 2 3 4
| CompareBDD compare = new CompareBDD(context);
compare.open();
.....
compare.close(); |
Et côté cursor, je ferme aussi. Voici un exemple :
Code:
1 2 3 4 5 6
| public Compare[] getAll()
{
Cursor c = bdd.query(TABLE, new String[] {COL_ID, COL_NAME, COL_BRAND, COL_RATING4}, null, null, null, null, null);
return cursorToCompareTab(c);
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| private Compare[] cursorToCompareTab(Cursor c)
{
int nb = c.getCount();
if (nb == 0) return null;
Compare[] comp = new Compare[nb];
c.moveToFirst();
for (int i = 0; i < nb; i++)
{
comp[i] = new Compare(c.getInt(NUM_COL_ID), c.getString(NUM_COL_NAME),
c.getString(NUM_COL_BRAND), c.getFloat(NUM_COL_RATING4));
c.moveToNext();
}
c.close();
return comp;
} |
Avez-vous une idée ?
Merci d'avance pour vos réponses.