简体   繁体   中英

Reuse subscriber

In RxJava I have a Subscriber object wich I subscribe on a Observable . Later on (some time after onComplete() has been invoked) I create a new Observable and subscribe with the same Subscriber instance used before. However, that seems not work. Is a subscriber not reusable?

Example:

class Loader extends Subscriber<T> {

   public void load(){
       Observable.just("Foo").subscribe(this);
   }

   public void onComplete(){
     // update UI
   }

}

In my code I would like to instantiate a Loader once, and call load() multiple time, for instance after the user clicks on a refresh button ...

You cannot reuse Subscriber , because it implements Subscription , which has an isUnsubscribed field which, once set to true , will never become false again, so Subscription is not reusable.

Observer , on the other hand, does not contain any information about the subscription status, so you can reuse it. Each time you subscribe an Observer to an Observable , the RxJava implementation will wrap it inside a new Subscriber for you.

Use Observable::concat to create an Observable that emits the items from several Observables in sequence. Subscribe that.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM