- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
由于这个异常,我遇到了几次崩溃,但无法在我自己的任何设备/模拟器上复制它。
android.database.CursorWindowAllocationException:
at android.database.CursorWindow.<init> (CursorWindow.java:108)
at android.database.AbstractWindowedCursor.clearOrCreateWindow (AbstractWindowedCursor.java:198)
at android.database.sqlite.SQLiteCursor.fillWindow (SQLiteCursor.java:138)
at android.database.sqlite.SQLiteCursor.getCount (SQLiteCursor.java:132)
at android.database.AbstractCursor.moveToPosition (AbstractCursor.java:220)
at android.database.AbstractCursor.moveToNext (AbstractCursor.java:269)
at rpuls.yatzysheets.DBController.getGameTime (DBController.kt:264)
at rpuls.yatzysheets.PreviousGames$onCreateView$1.invoke (PreviousGames.kt:78)
at rpuls.yatzysheets.PreviousGames$onCreateView$1.invoke (PreviousGames.kt:23)
at org.jetbrains.anko.support.v4.SupportKt.UI (Support.kt:62)
at rpuls.yatzysheets.PreviousGames.onCreateView (PreviousGames.kt:33)
at android.support.v4.app.Fragment.performCreateView (Fragment.java:2337)
at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1419)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManager.java:1740)
at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1809)
at android.support.v4.app.BackStackRecord.executeOps (BackStackRecord.java:799)
at android.support.v4.app.FragmentManagerImpl.executeOps (FragmentManager.java:2580)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether (FragmentManager.java:2367)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute (FragmentManager.java:2322)
at android.support.v4.app.FragmentManagerImpl.execPendingActions (FragmentManager.java:2229)
at android.support.v4.app.FragmentManagerImpl$1.run (FragmentManager.java:700)
at android.os.Handler.handleCallback (Handler.java:790)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loop (Looper.java:164)
at android.app.ActivityThread.main (ActivityThread.java:6651)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:810)
fun getGameTime(gameId: Long): String{
val db = this.readableDatabase
val cursor = db.rawQuery("SELECT ${gameTable.timestamp} FROM ${gameTable.table} WHERE ${gameTable.id} = ${gameId}", null)
var result = ""
if(cursor.moveToNext()){
result = cursor.getString(cursor.getColumnIndex(gameTable.timestamp))
}
db.close()
return result
}
当我用谷歌搜索 CursorWindowAllocationException 时,几乎每个结果都与未关闭光标和内存不足导致 moveToNext()
抛出异常有关。
然而,在我得到的堆栈跟踪中,没有任何关于内存不足的信息,我相信我的游标会关闭,因为它所在的 readableDatabase 数据库已关闭?
基本上是一款配备 2GB 内存的现代手机。它在过去 60 天内发生过一次,但我几个月前就见过它。
该应用每天大约在 40 台设备上运行,因此在 2400 次运行中有 1 次崩溃 - 不多,但我想知道为什么会这样。
最佳答案
我会说你的作品 cursor
有点奇怪。而且我不确定 cursor
是否会在数据库关闭时关闭。无论如何,我建议这样做:
if (cursor.moveToFirst()) {
result = cursor.getString(cursor.getColumnIndex(gameTable.timestamp))
}
cursor.close()
db.close()
关于android - cursor.moveToNext() 抛出 CursorWindowAllocationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54865761/
我正在尝试将表中的所有列查询到一个长 TextView 和/或字符串中。我知道这可能不是做事的正确方法,但我必须这样做。如果我错了,请纠正我,我的印象是下一步会得到行中的下一列: Cursor c =
//row --> 2 int row = mCursor.getCount(); for (int i = 0; i < row; i++) { if (mCursor.moveToPositio
为什么我的 Android Cursor 没有一直走到原来“promise”的末尾?? 我的 cursor.getCount() 与我上一个 cursor.getPosition() 不同。检查我的
我偶尔会看到崩溃报告: Fatal Exception: java.lang.IllegalStateException: Couldn't read row 1127, col 0 from Cur
在 Android 应用程序中,您可以使用方法 ContentResolver.query()查询 URI。结果,你得到一个 Cursor 对象,然后你只需执行 Cursor.moveToNext()
由于这个异常,我遇到了几次崩溃,但无法在我自己的任何设备/模拟器上复制它。 来自 google play console 的堆栈跟踪 android.database.CursorWindowAl
boolean android.database.Cursor.moveToNext() 文档说: http://developer.android.com/reference/android/dat
下一段代码会按预期工作吗? Cursor c = db.query(tableName, requestedColumns, condition, conditionParams, n
以下语句 cursor.moveToNext() 始终为 false。我希望循环执行一次。我测试过查询实际上返回了数据。 谁知道这是怎么回事? String query ="SELECT(SE
创建标准 SQLite 游标后,我将使用以下方法遍历条目: while (cursor.moveToNext()) { } 所有行都被正确处理。我读过的所有文档都表明您需要发出 moveToFirst
我整个早上都在 StackOverflow 上尝试自学如何在 Android 应用程序上对我上传的 SQLite 数据库进行查询。我尝试过原始查询和直接查询,但到目前为止都没有奏效。这是代码: pub
我正在我的 Sqlite 数据库中运行查询.. 我将结果保存在我的 Cursor 中,我正在遍历它以获得所有结果.. allotugh 我正在检查并看到游标有超过 1 行,它只给我第一行,因为 mov
我想知道是否可以在 moveToNext() 之前调用 getType() 和 getColumnNames()。 基本上,我正在尝试编写以下辅助函数: public static int getC
我是一名优秀的程序员,十分优秀!