尝试执行以下代码时,我总是收到异常消息;
java.lang.IllegalStateException:此 Realm 实例已被关闭,因此无法使用。
但是如果我注释掉 database.close(( 调用,那么它工作正常。可能是什么原因呢?
Observable.defer(() -> Observable.create((ObservableOnSubscribe<String>) cacheEmitter -> {
Realm database = Realm.getDefaultInstance();
database.executeTransaction(realm -> {
RealmResults<ResponseCache> cache = realm.where(ResponseCache.class).findAll();
ResponseCache cacheData = new ResponseCache(null, "");
for(ResponseCache resCache : cache) {
if(resCache.getCategoryId().equals(searchType)) {
cacheData = new ResponseCache(resCache);
break;
}
}
String cacheResData = cacheData.getSearchResponse();
database.close();
cacheEmitter.onNext(cacheResData);
});
}))
应该是
try(Realm database = Realm.getDefaultInstance()) {
database.executeTransaction(realm -> {
RealmResults<ResponseCache> cache = realm.where(ResponseCache.class).findAll();
ResponseCache cacheData = new ResponseCache(null, "");
for(ResponseCache resCache : cache) {
if(resCache.getCategoryId().equals(searchType)) {
cacheData = new ResponseCache(resCache);
break;
}
}
String cacheResData = cacheData.getSearchResponse();
cacheEmitter.onNext(cacheResData);
});
}