如果有人遇到过类似的问题。将非常感谢您提供的解决方案
使用的组件:使用的版本: android.arch.work:work-runtime:architectureWork:1.0.1
下面是错误日志:
android.database.CursorWindowAllocationException:
at android.database.CursorWindow.nativeCreate (CursorWindow.java)
at android.database.CursorWindow.<init> (CursorWindow.java:145)
at android.database.sqlite.SQLiteCursor.clearOrCreateWindow (SQLiteCursor.java:319)
at android.database.sqlite.SQLiteCursor.fillWindow (SQLiteCursor.java:159)
at android.database.sqlite.SQLiteCursor.getCount (SQLiteCursor.java:152)
at androidx.work.impl.model.WorkSpecDao_Impl.getAllUnfinishedWork (WorkSpecDao_Impl.java:1203)
at androidx.work.impl.WorkerWrapper.resolve (WorkerWrapper.java:427)
at androidx.work.impl.WorkerWrapper.resetPeriodicAndResolve (WorkerWrapper.java:561)
at androidx.work.impl.WorkerWrapper.handleResult (WorkerWrapper.java:447)
at androidx.work.impl.WorkerWrapper.onWorkFinished (WorkerWrapper.java:335)
at androidx.work.impl.WorkerWrapper$2.run (WorkerWrapper.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
at java.lang.Thread.run (Thread.java:919)
android.database.CursorWindowAllocationException: Could not allocate CursorWindow '/data/user/0/com.testapp/databases/androidx.work.workdb' of size 4194304 due to error -13.
android.database.CursorWindow.nativeCreate(:-2)
android.database.CursorWindow.<init>(CursorWindow.java:145)
android.database.sqlite.SQLiteCursor.clearOrCreateWindow(SQLiteCursor.java:319)
android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:159)
android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:152)
android.database.AbstractCursor.moveToPosition(AbstractCursor.java:232)
android.database.AbstractCursor.moveToFirst(AbstractCursor.java:271)
be.b(SourceFile:16) (be = androidx.work.impl.model.WorkSpecDao_Impl)
androidx.work.impl.q.k(SourceFile:2)
androidx.work.impl.q.h(SourceFile:54)
androidx.work.impl.q.run(SourceFile:3)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
java.lang.Thread.run(Thread.java:919)发布于 2021-03-26 14:53:51
问题似乎是它无法获得4M (4194304字节)的CursorWindow。我怀疑不是因为没有足够的内存,而是它无法分配文件,可能是因为剩余的文件句柄不足。
我会查看您的代码,并确保您在使用游标时(使用Cursor close方法)关闭了游标,特别是在循环中。
https://stackoverflow.com/questions/66810507
复制相似问题