Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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 &引用;在从光标访问数据之前,确保光标已正确初始化;房间里的错误_Android_Android Room - Fatal编程技术网

Android &引用;在从光标访问数据之前,确保光标已正确初始化;房间里的错误

Android &引用;在从光标访问数据之前,确保光标已正确初始化;房间里的错误,android,android-room,Android,Android Room,在Crashlytics上,我看到许多房间异常,其中有这样一条消息:“确保光标在访问数据之前已正确初始化”。我无法在我的设备上产生此错误,并且该错误不会发生在特定的Android版本或设备型号上 我在房间里找不到关于这个错误的任何信息。SQLLite有一个问题,其中大多数是关于手工编写的有问题的SQL查询 即使这个简单的查询在客户设备上也有错误 @Query("SELECT * FROM UserAction WHERE UserAction.userId LIKE :userId " +

在Crashlytics上,我看到许多房间异常,其中有这样一条消息:“确保光标在访问数据之前已正确初始化”。我无法在我的设备上产生此错误,并且该错误不会发生在特定的Android版本或设备型号上

我在房间里找不到关于这个错误的任何信息。SQLLite有一个问题,其中大多数是关于手工编写的有问题的SQL查询

即使这个简单的查询在客户设备上也有错误

@Query("SELECT * FROM UserAction WHERE UserAction.userId LIKE :userId " +
        " ORDER BY last_update_time DESC")
public List<UserAction> allList(String usedId);

我不确定我是否有同样的问题。我在
getAll
SELECT*FROM
)函数中遇到崩溃。我的堆栈:

java.lang.IllegalStateException:无法从CursorWindow读取第83行第0列。在开始之前,请确保光标已正确初始化 从中访问数据。 位于android.database.CursorWindow.nativeGetLong(本机方法) 位于android.database.CursorWindow.getLong(CursorWindow.java:507) 位于android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:86) 位于android.database.AbstractCursor.moveToPosition(AbstractCursor.java:220) 位于android.database.AbstractCursor.moveToNext(AbstractCursor.java:245) 在Dao_Impl.getAll(LoggingDao_Impl.java:99) 运行(Thread.java:838)

在此异常之前,我有一个日志:

W/CursorWindow:窗口已满:请求分配2282898字节,可用空间2086484字节,窗口大小2097152字节

我的实体包含
字符串
文本
。我成功地将2.2Mb缓冲区插入其中。不幸的是,android无法读取它。CursorWindow的最大大小为2 Mb。阅读更多

我找到了两种可能的解决方案:


  • 获取所有项目时忽略具有大缓冲区的行:
    SELECT*FROM name WHERE length(text)选中此项当行太大时,我的测试中的异常为“sqliteblobtoobigeexception”。您的测试是否抛出“IllegalStateException:无法从CursorWindow读取第83行第0列”?是的,我得到了IllegalStateException。我的设备4.2.2、API 29和字符串数据类型。
    
      while(_cursor.moveToNext()) {
        final UserAction _item;
        _item = new UserAction();
        _item.userId = _cursor.getString(_cursorIndexOfUserId); //Exception here