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.