Skip to content

Instantly share code, notes, and snippets.

@ypresto
Last active March 30, 2017 09:13
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save ypresto/accec4409654a1830f54 to your computer and use it in GitHub Desktop.
.lift(SubscriptionUtils.composite(mCompositeSubscription)) and forget about subscriptions but composite one.
import rx.Observable;
import rx.Subscriber;
import rx.functions.Action0;
import rx.subscriptions.CompositeSubscription;
import rx.subscriptions.Subscriptions;
public class SubscriptionUtils {
/**
* Automatically adds to / removes from specified {@link CompositeSubscription} when subscribe / unsubscribe is called.
* Useful when subscribing observable repeatedly, as you do not need to manipulate CompositeSubscription manually.
*/
public static <T> Observable.Operator<T, T> composite(CompositeSubscription compositeSubscription) {
return new Observable.Operator<T, T>() {
@Override
public Subscriber<? super T> call(Subscriber<? super T> subscriber) {
compositeSubscription.add(subscriber);
subscriber.add(Subscriptions.create(new Action0() {
@Override
public void call() {
compositeSubscription.remove(subscriber);
}
}));
return subscriber;
}
};
}
}
@ypresto
Copy link
Author

ypresto commented Oct 4, 2015

Please ensure to call lift() on just before subscribe() call.
Refer trello/RxLifecycle#19 .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment