Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android java.lang.IllegalStateException:cand';初始化光标窗口_Android_Database_Cursor_Android Sqlite_Illegalstateexception - Fatal编程技术网

Android java.lang.IllegalStateException:cand';初始化光标窗口

Android java.lang.IllegalStateException:cand';初始化光标窗口,android,database,cursor,android-sqlite,illegalstateexception,Android,Database,Cursor,Android Sqlite,Illegalstateexception,我在google play崩溃报告中有此错误,不知道如何修复: java.lang.IllegalStateException: Couldn't init cursor window at android.database.CursorWindow.native_init(Native Method) at android.database.CursorWindow.<init>(CursorWindow.java:41) at android.database.sqlite.SQ

我在google play崩溃报告中有此错误,不知道如何修复:

java.lang.IllegalStateException: Couldn't init cursor window
at android.database.CursorWindow.native_init(Native Method)
at android.database.CursorWindow.<init>(CursorWindow.java:41)
at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:276)
at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:268)
at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:171)
at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:248)
at com.jim2.UpdateService.restaureNotifications(UpdateService.java:274)
at com.jim2.helpers.Globals.updateWidgets(Globals.java:1011)
at com.jim2.helpers.Globals.onReceive(Globals.java:746)
at com.jim2.UpdateService$5.onSignalStrengthsChanged(UpdateService.java:747)
at android.telephony.PhoneStateListener$2.handleMessage(PhoneStateListener.java:387)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3693)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
at dalvik.system.NativeStart.main(Native Method)
下面是从getNotifications获取光标的代码:

public Cursor getNotifications(boolean all) {
        //removeAllNotifications();
        Cursor c;
        String fields[] = new String[] { "id", "ordre", "is_active"};
        String where = "is_active = 1";
        if(all)where = "";
        c = myDataBase.query(TABLE, fields, where, null, null, null, "ordre");

        return c;
    }
我的问题是我无法重现崩溃,因此很难修复设备上的原因,因为所有设备都正常工作

已经看到了这篇文章,但我在moveToFirst上崩溃了,我已经在答案中添加了代码


非常感谢

不确定,但不应该是吗

        c = myDataBase.query(TABLE, fields, where, null, null, null, "ordre DESC")

此异常由本机代码引发。(请参阅)

主要原因是无法为正在创建的新游标分配内存。因此,我的猜测是,您正在获取的数据有时获取的数据太多(内存中的数据几乎超过1M),或者您正在打开大量光标而不关闭它们,直到内存耗尽以分配新的缓冲区为止

  • 检查代码并确保在
    finally
    子句中关闭所有游标
  • 如果从数据库中提取的数据可能过大,则将其分为不同的块(如在某个列表中提取更多数据)

  • 让我知道这是否有帮助。

    无原因ordre是一个字段,它不是顺序,我希望0到x,所以它是ASC(或无原因,因为它是默认值),非常感谢!!!我无法测试,因为我无法重现错误,但我检查了代码,忘记了一些close(),所以我认为是这样(我希望如此)。这不可能是我的数据,因为我最多有5行和3个字段^^嗨,我已经在google play上进行了更新,异常仍然存在:(我有搜索功能,现在我所有的游标都关闭了。你有其他办法解决这个问题吗?我很确定悬空的未关闭的游标是导致这个错误的主要原因。每个打开的游标都会分配1M的内存,直到没有空间为止。请让其他人(另一只眼睛)看看)查看您的代码。请让我知道您发现了什么。好的,我将再次查看,并尝试向其他人显示我的代码以确保。目前我只有一个上一版本的报告,因此可能是上一版本的非关闭光标造成了此崩溃…有可能吗?我始终存在崩溃:(但我认为这是一个内存问题,就像你说的。但这个内存问题不再是由非闭合光标引起的。我不知道如何找到内存问题的位置:(
            c = myDataBase.query(TABLE, fields, where, null, null, null, "ordre DESC")