赞
踩
android.database.CursorWindowAllocationException: Could not allocate CursorWindow '/data/user/0/cn.xxx.xxx/databases/xxx.db' of size 2097152 due to error -13.
at android.database.CursorWindow.nativeCreate(Native Method)
at android.database.CursorWindow.<init>(CursorWindow.java:139)
at android.database.CursorWindow.<init>(CursorWindow.java:120)
at android.database.AbstractWindowedCursor.clearOrCreateWindow(AbstractWindowedCursor.java:202)
at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:147)
at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:140)
at yd.d.m(SourceFile:21)
at cn.xxx.control.y.y0(SourceFile:1)
at e5.y.p(SourceFile:230)
at e5.y.l(SourceFile:1)
at e5.y.E(SourceFile:1)
at cn.xxx.cluster.classin.viewmodel.SessionViewModel$d.invokeSuspend(SourceFile:42)
...
Room
对应的 Sqlite
数据库,其对 CursorWindows
分配的大小是有限制的,最大为 2M
,超过之后会发生上述崩溃闪退现象(偶现且难以复现的 bug
)controller
提供新的方法,且这个 controller
层的方法需要添加 @Transaction
进行注解,从而保证在同一个事物内进行数据库操作,以此避免 CursorWindows
大小超过 2M
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。