J'ai posté ce retour en Mai sur le [android-les développeurs] Google Groupe. Je n'ai jamais entendu parler et n'a pas été en mesure de reproduire le problème jusqu'à ce qu'un de mes élèves a fait la semaine dernière. J'ai pensé à la poster ici et de voir si il a sonné les cloches pour n'importe qui.
Dans l'un de mes exemples de code, j'ai la méthode suivante:
static Cursor getAll(SQLiteDatabase db, String orderBy) {
return(db.rawQuery("SELECT * FROM restaurants "+orderBy, null));
}
Quand je le lance, de façon sporadique, j'obtiens ceci:
05-01 14:45:05.849: ERROR/AndroidRuntime(1145):
java.lang.IllegalStateException: attempt to acquire a reference on a
close SQLiteClosable
05-01 14:45:05.849: ERROR/AndroidRuntime(1145): at
android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:31)
05-01 14:45:05.849: ERROR/AndroidRuntime(1145): at
android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:56)
05-01 14:45:05.849: ERROR/AndroidRuntime(1145): at
android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:49)
05-01 14:45:05.849: ERROR/AndroidRuntime(1145): at
android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:49)
05-01 14:45:05.849: ERROR/AndroidRuntime(1145): at
android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1118)
05-01 14:45:05.849: ERROR/AndroidRuntime(1145): at
android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1092)
05-01 14:45:05.849: ERROR/AndroidRuntime(1145): at
apt.tutorial.Restaurant.getAll(Restaurant.java:14)
Cela n'a aucun sens pour moi. La base de données est certainement ouverte. L'
SQLiteClosable
est le SQLiteQuery
créé par SQLiteQueryDriver
, et je
voyons aucune preuve qu'il y est un objet de la piscine ou quelque chose se passe ici
qui pourrait expliquer comment un "nouveau" SQLiteClosable
est déjà fermé. L'
fait qu'elle est sporadique (ce qui signifie la même INTERFACE utilisateur opérations parfois
déclenchement de l'exception, mais pas toujours) suggère une sorte de piscine, course
l'état, ou quelque chose...mais je ne sais pas où.
Pensées?
Merci!
Mise à JOUR: Le code en question est de la LunchList tutoriaux de mon Android Programmation Tutoriels livre. C'est un peu dispersé et pas très adapté pour les publier directement dans la. Vous pouvez télécharger le code de ce livre à partir du lien ci-dessus si vous voulez prendre un coup d'oeil. Je ne me souviens pas exactement de l'édition du tutoriel de l'étudiant était en train de travailler, bien qu'il soit dans le Tutoriel 12-Tutoriel 16 gamme. J'étais plupart du temps en espérant de trouver quelqu'un qui avait trébuché sur ce problème avant et avait une probable. Je suis assez certain que ma base de données est ouverte. Merci encore!