房间数据库抛出 CursorWindowAllocationException

Ter*_*wis 5 android android-room

最近,我开始面临这个异常。据我所知,当事务后游标未关闭时,会抛出此异常。然而,Room 数据库在自动生成的 DaoImpl 代码中处理这个问题。我无法找出此异常的原因。这是堆栈跟踪:

Fatal Exception: android.database.CursorWindowAllocationException: Cursor window allocation of 2048 kb failed. 
   at android.database.CursorWindow.(CursorWindow.java:108)
   at android.database.AbstractWindowedCursor.clearOrCreateWindow(AbstractWindowedCursor.java:226)
   at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:148)
   at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:142)
   at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:219)
   at android.database.AbstractCursor.moveToNext(AbstractCursor.java:268)
   at android.arch.persistence.room.InvalidationTracker$1.checkUpdatedTable(InvalidationTracker.java:358)
   at android.arch.persistence.room.InvalidationTracker$1.run(InvalidationTracker.java:329)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
   at java.lang.Thread.run(Thread.java:764)
Run Code Online (Sandbox Code Playgroud)

这是查询:

    @Query("select * from PhoneEvent where event_type=:type and 
    client_created_timestamp>=:startTimestamp and 
    client_created_timestamp<:endTimestamp")
    List<PhoneEvent> getAllPhoneEventsOfTypeAndBetween(String type, 
    long startTimestamp, long endTimestamp);
Run Code Online (Sandbox Code Playgroud)

在 Dao_Impl 中,在这一行抛出异常:

    final List<PhoneEvent> _result = new ArrayList<PhoneEvent>(_cursor.getCount());
Run Code Online (Sandbox Code Playgroud)