Sinigr
Sinigr

Reputation: 154

Close Realm instance, when i use Realm query with RxJava

when I return query results as observable, where I must close realm instance? Example:

public Observable<RealmResults<Weather>> getWeatherForecast() {
       final Realm realm = Realm.getDefaultInstance(); 

       return realm.where(Weather.class).findAllAsync().asObservable()
                .filter(RealmResults::isLoaded);
}

Upvotes: 2

Views: 793

Answers (1)

R. Zag&#243;rski
R. Zag&#243;rski

Reputation: 20268

There are a couple of cases:

  1. doOnCompleted operator:

    realm.where(Weather.class).findAllAsync().asObservable()
            .filter(RealmResults::isLoaded)
            .first()
            .doOnCompleted(new Action0() {
                 @Override
                 public void call() {
                     realm.close();
                 };
            })
    
  2. Inside Subscriber's onCompleted method:

    getWeatherForecast()
            .subscribe(new Subscriber<Boolean>() {
                @Override
                public void onCompleted() {
                    realm.close();
                }
    
                @Override
                public void onError(Throwable e) {
    
                }
    
                @Override
                public void onNext(Boolean aBoolean) {
                }
            });
    

Upvotes: 2

Related Questions