Cursor window could not be created from binder

后端 未结 3 584
有刺的猬
有刺的猬 2021-01-01 15:18
1 Cursor cursor = contentResolver.query(MY_URI, new String[] { \"first\" }, null, null, null);
2 if (cursor != null) {
3   if (cursor.moveToFirst()) {
4       first          


        
相关标签:
3条回答
  • 2021-01-01 16:01

    Try out this way:

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

    }

    0 讨论(0)
  • 2021-01-01 16:06

    I suspect the error may be related to you not closing your cursors properly all the time. Try:

    Cursor cursor = contentResolver.query(MY_URI, new String[] { "first" }, null, null, null);
    if (cursor != null) {
      if (cursor.moveToFirst()) {
          first = cursor.getString(cursor.getColumnIndex("first"));
      }
      cursor.close(); ///// Changed here
    }
    

    The cursor should always be closed (regardless of whether or not its empty). Make sure the rest of your app is doing this as well.

    0 讨论(0)
  • 2021-01-01 16:09

    Try another thread

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

    . But by Android SDK source codes look like 4.0.2_r1

    130  private CursorWindow(Parcel source) {
    131 mStartPos = source.readInt();
    132 mWindowPtr = nativeCreateFromParcel(source);
    133 if (mWindowPtr == 0) {
    134 throw new CursorWindowAllocationException("Cursor window could not be "
    135 + "created from binder.");
    136 }
    137 mName = nativeGetName(mWindowPtr);
    138 mCloseGuard.open("close");
    139 }
    where mWIndowPtr is Int

    0 讨论(0)
提交回复
热议问题