Sqlite游标窗口分配2048kb失败。

5
  public List<Diagnosis_tble> GetAllPatientDetails()
     {
      List<Diagnosis_tble> DiagnosistblList = new   ArrayList<Diagnosis_tble>();  
      String selectQuery = "SELECT  * FROM " + TABLE_Diagnosistble + "";  
      SQLiteDatabase db = this.getWritableDatabase();
      Cursor cursor = null;

       {  
        cursor = db.rawQuery(selectQuery, null);

      if(cursor.getCount() > 0)
      {
        if (cursor.moveToFirst()) 

         do{     
            Diagnosis_tble  diagCreation_tble = new Diagnosis_tble(); 

             diagCreation_tble.SetDiagnosisID(cursor.getString(0));
             diagCreation_tble.SetPName(cursor.getString(1));
             diagCreation_tble.SetHospitalNo(cursor.getString(2));
             diagCreation_tble.SetPGender(cursor.getString(3));
             diagCreation_tble.SetPacemaker(cursor.getString(4));
             diagCreation_tble.SetDiagType(cursor.getString(5));
             diagCreation_tble.SetP_Age(cursor.getString(6));
             diagCreation_tble.SetDeviceID(cursor.getString(7));
             diagCreation_tble.SetDiagStrtTime(cursor.getString(8));
             diagCreation_tble.SetDiagEndTime(cursor.getString(9));
             diagCreation_tble.SetDiagStatus(cursor.getString(10));
             diagCreation_tble.SetReportStatus(cursor.getString(11));
             diagCreation_tble.SetUploadStatus(cursor.getString(12));

          DiagnosistblList.add(diagCreation_tble); 

         }while (cursor.moveToNext());

          return DiagnosistblList; 
      }else
      {
          return null;
      } 
    }
    finally
    {
        cursor.close();
    }
}  

这段代码有什么问题?
我遇到了这个异常:
 java.lang.RuntimeException: Unable to start activity 
 ComponentInfo{com.abc.TestApp/com.abc.TestApp.LoadData}:
 android.database.CursorWindowAllocationException: Cursor window allocation of 2048 kb failed. 
1个回答

7

我曾经和你一样遇到过同样的问题。我的解决方法是检查我的应用程序数据类,并关闭所有未关闭的游标对象。所以我想在你的应用程序中也可能发生了同样的情况,请打开你的数据类并找到未关闭的游标,然后将它们关闭。


你能检查一下我上面的代码吗?我有什么地方漏掉了吗?你能帮我纠正一下吗? - Tejas
1
通常移动设备不允许加载大量数据到其内存中,所以我猜你正在加载大量数据... 你能否通过筛选一些列而不是加载所有列和所有数据来重新检查它。只需加载少量记录并查看即可... 我再次检查你的代码.. :) 等等 - Dehan Wjiesekara
声明以下内容为全局变量。 - Dehan Wjiesekara
你遇到了什么问题?你是如何克服它的? - Dehan Wjiesekara
2
确保在每个函数中关闭所有游标,这是出现此异常的唯一原因。这就是我解决这个问题的方法。 - Tejas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接