我在android中使用Room database
,并且在我正在使用Rx
的后台线程上执行查询。来自Rx的回调根据需要在主线程或IO线程上返回。但是,有时CursorWindowAllocationException
会抛出Room
。我没有直接使用游标。它由房间本身处理。任何帮助将不胜感激。
我无法尝试任何事情,因为我对这个问题一无所知。我注意到,当有大量数据时,就会发生此问题。但是,我不确定100%。
@Dao
public interface ContentDao {
@Insert
long insertContent(ContentModel contentModel);
@Query("SELECT * FROM " + DBConstant.CONTENT_TABLE)
List<ContentModel> getContentDetail();
}
Executing Query:
if (isCallbackRequiredOnMainThread) {
Single.just(1)
.subscribeOn(Schedulers.IO())
.map(i -> {
//Executing Query
return data == null ? nullD : data;
}).observeOn(AndroidSchedulers.mainThread())
.subscribe(data -> dDbCallback.onDbDataReceived(data));
} else {
Single.just(1)
.subscribeOn(Schedulers.IO())
.map(i -> {
//Executing Query
return data == null ? nullD : data;
}).subscribe(data -> dDbCallback.onDbDataReceived(data));
}
}
答案 0 :(得分:0)
事实证明,问题出在RxJava的.subscribeOn(Schedulers.io())中,用于RxJava Room适配器中的Flowable响应。显然,它正在启动线程,但从未释放它们。您需要增加线程数以明显地消除错误