バックグラウンドスレッドの実装を、私がsubscribeOn(AndroidScheduler.from(/ backgroundThreadWithLooper /)に渡すことができるLooperで共有できますか?ルーパーを使ってバックグラウンドスレッドを作成するには
ライブオブジェクトの更新を取得しながら、すべての操作をバックグラウンドで実行するDBServiceクラスを実装しようとしているため、これが必要です。私はのaddChangeListenerを適用するときに、例外がスローされます。
java.lang.IllegalStateException: Your Realm is opened from a thread without a Looper. Async queries need a Handler to send results of your query
または私はfindAllのを(使用する場合)の代わりにfindAllAsync()の:
java.lang.IllegalStateException: You can't register a listener from a non-Looper thread or IntentService thread.
DBServiceコード:
public Observable<List> getAll(Class clazz) {
return Observable.defer(() -> {
Realm realm = Realm.getDefaultInstance();
return realm.where(clazz).findAll().asObservable()
.map(o -> realm.copyFromRealm((RealmResults) o))
.doOnUnsubscribe(() -> closeRealm(realm))
.doOnTerminate(() -> closeRealm(realm));
});
}
私のために働いた 'HandlerThread' – pskink
@pskinkのおかげで、見 –