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