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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CompareBDD compare = new CompareBDD(context); compare.open(); ..... compare.close();
Et côté cursor, je ferme aussi. Voici un exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Partager