- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当我发出大量 cursor.moveToNext() 请求时,我的程序崩溃了。错误信息如下:
android.database.CursorWindowAllocationException: Cursor window allocation of 2048 kb failed. # Open Cursors=773 (# cursors opened by this proc=773)
at android.database.CursorWindow.<init>(CursorWindow.java:112)
at android.database.CursorWindow.<init>(CursorWindow.java:100)
at android.database.AbstractWindowedCursor.clearOrCreateWindow(AbstractWindowedCursor.java:198)
at android.database.sqlite.SQLiteCursor.clearOrCreateWindow(SQLiteCursor.java:364)
at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:162)
at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:156)
at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:161)
at android.database.AbstractCursor.moveToNext(AbstractCursor.java:209)
at net.cunniman.teacherplannerlite.SchoolClassDataSource.getClassForDayView(SchoolClassDataSource.java:173)
at net.cunniman.teacherplannerlite.DayView.getSchoolClasses(DayView.java:200)
at net.cunniman.teacherplannerlite.DayView.displayDate(DayView.java:176)
at net.cunniman.teacherplannerlite.DayView.plusDay(DayView.java:287)
at net.cunniman.teacherplannerlite.DayView.onClick(DayView.java:93)
at android.view.View.performClick(View.java:3565)
at android.view.View$PerformClick.run(View.java:14165)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4514)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
at dalvik.system.NativeStart.main(Native Method)
try {
this.openForRead();
for (int day_counter = 0; day_counter < DAY_PERIOD.length/2; day_counter++)
{
Cursor cursor = database.rawQuery
("SELECT " + NAME + " FROM " + TABLE_NAME + " WHERE " + DAY_PERIOD[day_counter * 2]
+ " = '" + day + "' AND " + DAY_PERIOD[day_counter * 2 + 1] + " = "
+ Integer.toString(period), null);
while (cursor.moveToNext())
{
String name = cursor.getString(0);
sc.setName(name);
}
} finally {
this.close();
}
有谁知道可能导致这种情况的原因 - 似乎是内存泄漏(也许?)但有什么方法可以防止它发生吗?
谢谢
最佳答案
此错误的最常见原因是游标未关闭。确保在使用后关闭所有游标(即使出现错误)。
Cursor cursor = null;
try {
cursor = db.query(...
// do some work with the cursor here. i.e.:
while (cursor.moveToNext())
{ .... }
} finally {
// this gets called even if there is an exception somewhere above
if(cursor != null)
cursor.close();
}
关于Android SQLite CursorWindowAllocationException 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12029437/
我收到这个错误: E/AndroidRuntime(8223): Caused by: android.database.CursorWindowAllocationException: Cursor
当我发出大量 cursor.moveToNext() 请求时,我的程序崩溃了。错误信息如下: android.database.CursorWindowAllocationException: Cur
我的 Google Play 开发控制台向我报告了我的 Android 应用程序第一次崩溃。看起来 SQLite 无法为游标分配内存,但我以前从未见过,也无法重现。有任何想法吗? Google 报告的
由于这个异常,我遇到了几次崩溃,但无法在我自己的任何设备/模拟器上复制它。 来自 google play console 的堆栈跟踪 android.database.CursorWindowAl
我偶尔会在我的 SyncAdapter 类中抛出以下异常。我认为我正在正确关闭所有游标。对于抛出此异常的原因,是否还有其他解释?还是我肯定在某处遗漏了 cursor.close()? Fatal Ex
我需要在数据库中保存一些对象。我在我的 Dao 类中使用这段代码。 public void saveActions(List actionList) throws SQLException {
在 Parse 中的本地数据存储功能可用之前,我曾经有自己的本地数据库供离线应用程序使用。我认为一切正常,直到我决定向我的应用程序添加一个主屏幕小部件,以及它的服务和从本地数据库提供的 ListVie
我使用的是 SQLite 数据库,经常会遇到无法找到根源的运行时错误。查询后,我使用 moveToFirst 指向检索到的第一条记录,这有时会触发 android.database.CursorWin
关于CursorWindowAllocatoinException的SO有很多问题: SQLite Android Database Cursor window allocation of 2048
我是一名优秀的程序员,十分优秀!