如何在RxJava中取消订阅Single Observable

时间:2017-04-10 10:19:15

标签: android rx-android rx-java2

我希望在手术后取消订阅Rx Singles。 这就是我在RxJava中取消订阅Observable的方法。

SVN

但我不确定如何取消订阅Single Observable。 如果有人能够分享一些想法会很棒。

public class BooksRepositoryImpl implements IBooksRepository {


    private ReplaySubject<Book> bookSubject;
    private Subscription bookSubscription;

    BooksApi BooksApi;
    ISchedulerProvider scheduler;

    @Inject
    public BooksRepositoryImpl(BooksApi BooksApi, ISchedulerProvider scheduler) {
        this.BooksApi = BooksApi;
        this.scheduler = scheduler;
    }

    @Override
    public Observable<Book> getBooks(String author) {

        if (bookSubscription == null || bookSubscription.isUnsubscribed()) {
            bookSubscription = ReplaySubject.create();

            bookSubscription = BooksApi.getBooks(author)
                    .subscribeOn(scheduler.backgroundThread());
        }

        return bookSubscription.asObservable();


    }


    @Override
    public void unbind() {

        if (bookSubscription != null && !bookSubscription.isUnsubscribed())
            bookSubscription.unsubscribe();

    }

}

}

1 个答案:

答案 0 :(得分:2)

根据文档Single,您应该什么都不做,订阅自行结束:

  

Single将仅调用其中一种方法,并且只会调用它   一旦。在调用任一方法时,Single终止并且   订阅结束。

希望这会有所帮助。 抱歉我的英文。