Entwicklertagebuch: ManagedQuery unter Honeycomb…

sollte man tunlichst vermeiden. Was bis einschliesslich Android 2.3.4 problemlos funktionierte, klappt nun unter Android >= 3.0 nicht mehr so gut. Wechselt man die Aktivität und ruft per Zurück wieder die Aktivität auf, dann kam es in meiner App zu einer IllegalStateException. Ursache war der durch die managedQuery bereits geschlossene Cursor.
Mit Hilfe des Internets habe ich da herausgefunden, dass man unter Honeycomb die managedQuery vermeiden sollte. Dort soll man besser auf den CursorLoader setzen.
Dabei ist aber zu beachten, dass der CursorLoader aktuell einen ContentProvider zum Zugriff auf die Daten benötigt.
Mit einem ContentProvider hatte ich meine App gerade ausgestattet.
Alles was ich zu tun hatte war also Cursor c = managedQuery(AndWOLEntry.CONTENT_URI, columns, null, null, null); gegen CursorLoader cursorLoader = new CursorLoader(this, AndWOLEntry.CONTENT_URI, columns, null, null, null);c = cursorLoader.loadInBackground(); auszutauschen.
Vorher frage ich noch auf die Androidversion ab und nutze den entsprechenden Code.
Danach gehörte die IllegalStateException der Vergangenheit an 🙂

Leave a Reply