Окно курсора не может быть создано из связующего

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 } 

Затем на линии №3 (согласно журналам) я время от времени сталкиваюсь с этим исключением (выдержка из ниже):

 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) 

Любые идеи, почему он выбрасывает это исключение? Благодаря!

Solutions Collecting From Web of "Окно курсора не может быть создано из связующего"

Я подозреваю, что ошибка может быть связана с тем, что вы не закрываете свои курсоры должным образом все время. Пытаться:

 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 } 6 cursor.close(); ///// Changed here 7 } 

Курсор всегда должен быть закрыт (независимо от того, является ли его пустым). Убедитесь, что все остальное приложение также делает это.

Попробуйте так:

  if (cursor != null) { cursor.moveToFirst(); do { first = cursor.getString(cursor.getColumnIndex("first")); }while(cursor.moveToNext()); 

}

Попробуйте другой поток

 new Thread(new Runnable(){ public void run(){ ...here all code }}); 

, Но исходные коды Android SDK выглядят как 4.0.2_r1

  130 private CursorWindow (источник почтовых сообщений) { 
131 mStartPos = источник. ReadInt ();
132 mWindowPtr = nativeCreateFromParcel (источник);
133 if (mWindowPtr == 0) {
134 throw new CursorWindowAllocationException ("Окно курсора не может быть"
135 + «создано из связующего».);
136 }
137 mName = nativeGetName (mWindowPtr);
138 mCloseGuard.open ("close");
139 }

Где mWIndowPtrInt