Curseur de la fenêtre ne peut pas être créé à partir de classeur

1 Cursor cursor = contentResolver.query(MY_URI, new String[] { "first" }, null, null, null);
2 if (cursor != null) {
3   if (cursor.moveToFirst()) {
4       first = cursor.getString(cursor.getColumnIndex("first"));
5       cursor.close();
6   }
7 }

Puis sur la ligne n ° 3 (selon les journaux), je chaque maintenant et puis je tombe sur cette exception (extrait ci-dessous):

android.database.CursorWindowAllocationException: Cursor window could not be created from binder.
    at android.database.CursorWindow.<init>(CursorWindow.java:134)
    at android.database.CursorWindow.<init>(CursorWindow.java:41)
    at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:709)
    at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:707)
    at android.database.CursorWindow.newFromParcel(CursorWindow.java:718)
    at android.database.BulkCursorProxy.getWindow(BulkCursorNative.java:196)

...

Des idées pourquoi il est en train de lancer cette exception? Merci!

  • essayez cette link
  • Le nombre de lignes dans la base de données qui est la sauvegarde de la ContentResolver? Cette exception est levée si le curseur ne parvient pas à allouer suffisamment d'espace pour stocker les données dont il a besoin. Puisque vous n'êtes pas limiter le nombre de lignes dans votre requête via la sélection args, votre cursor va allouer de l'espace à conserver une copie de l'ensemble de la colonne first dans la mémoire. Si il y a un grand nombre de lignes, potentiellement, le processus peut ne pas allouer de la mémoire.
  • il n'y a qu'une ligne, c'est pourquoi je n'ai pas fait une boucle pour elle.
  • La seule autre chose que je peux penser, c'est que c'est l'obtention d'un corrompu colis de retour.
  • Pouvez-vous élaborer sur la "corruption de colis". Cette exception n'est pas toujours rencontré, mais il y a des moments où il est rencontré, je me demande si c'est parce que d'autres choses.
  • Le code est un échec au CursorWindow$1.createFromParcel, qui est d'essayer de créer un CursorWindow à partir d'un Parcel objet. Si ce n'est pas faute de sur la répartition, elle pourrait être en défaut parce qu'il n'est pas d'obtenir des données pour le colis correctement. Je ne peux que spéculer sur les raisons qui pourraient être peut-être la connexion à la contentResolver n'est pas plus valable (comme garder un rassis poignée pendant dispositif de rotation, le thread d'arrière-plan, etc), l'autre extrémité du contenu de résolution n'est pas là une raison (pas de connexion de données, carte SD montée, etc.), ou d'un autre problème
  • si vous voulez des résultats, puis utiliser la commande par ex. dernier paramètre de la fonction et de l'inclure limiter, par exemple, utiliser "id DESC limit 1" pour commander votre résultat en fonction de l'id avec un seul résultat

InformationsquelleAutor reika | 2013-01-14