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 }
Następnie na linii # 3 (według kłody), że co jakiś czas spotykam tego wyjątku (fragment poniżej):okno Kursor nie może być stworzony od spoiwa
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)
..
Jakieś pomysły, dlaczego rzuca ten wyjątek? Dzięki!
spróbuj tego [LINK] (http://stackoverflow.com/questions/5288384/android-content- resolver-query-return-0-rows-when-it-should-not-too) –
Ile wierszy znajduje się w bazie danych, która obsługuje 'ContentResolver'? Ten wyjątek jest generowany, jeśli kursor nie może przydzielić wystarczającej ilości miejsca na przechowywanie potrzebnych danych. Ponieważ nie ograniczasz liczby wierszy w zapytaniu poprzez argumenty wyboru, twój 'kursor 'przydzieli miejsce, aby zachować kopię całej kolumny' pierwszy' w pamięci. Jeśli istnieje duża liczba wierszy, potencjalnie proces może nie zaalokować tej pamięci. – iagreen
@iagreen, jest tylko jeden wiersz, dlatego nie zrobiłem dla niego pętli. – lorraine