由于内存不足,无法创建CursorWindow的实例,从下面的崩溃统计中分析得出,这个崩溃多发生在4.4.2的设备上。
1 2 3 4 5 6 7 8 9 10 11 12 |
android.database.CursorWindowAllocationException Cursor window allocation of 2048 kb failed. android.database.CursorWindow.(CursorWindow.java:104) android.database.AbstractWindowedCursor.clearOrCreateWindow(AbstractWindowedCursor.java:198) android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:139) android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:133) android.database.AbstractCursor.moveToPosition(AbstractCursor.java:197) android.database.AbstractCursor.moveToFirst(AbstractCursor.java:237) de.greenrobot.dao.AbstractDao.loadUnique(Unknown Source) de.greenrobot.dao.AbstractDao.loadUniqueAndCloseCursor(Unknown Source) de.greenrobot.dao.InternalQueryDaoAccess.loadUniqueAndCloseCursor(Unknown Source) de.greenrobot.dao.query.Query.unique(Unknown Source) |
1 2 3 4 5 6 7 8 9 10 11 |
public CursorWindow(String name) { mStartPos = 0; mName = name != null && name.length() != 0 ? name : ""; mWindowPtr = nativeCreate(mName, sCursorWindowSize); if (mWindowPtr == 0) { throw new CursorWindowAllocationException("Cursor window allocation of " + (sCursorWindowSize / 1024) + " kb failed. " + printStats()); } mCloseGuard.open("close"); recordNewWindow(Binder.getCallingPid(), mWindowPtr); } |