RxAndroid:是否有一种干净的方式从Observable获取订阅服务器对象?
问题描述:
所以从我的视图模型我打电话给我的可观察到的另一个类:RxAndroid:是否有一种干净的方式从Observable获取订阅服务器对象?
getAuthentication.kickoff()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<RxOkHttpResponse>() {
@Override
public final void onCompleted() {
getAlbums();
}
@Override
public final void onError(Throwable e) {
userMsgHandler.showToast(mParent,mParent.getString(R.string.error_cannot_authenticate));
}
@Override
public final void onNext(RxOkHttpResponse response) {
mSubscription = response.subscription;
}
});
所以这显然调用返回一个观测。所以我想知道什么是最简洁的方式来调用subscriber.unsubscribe()在这个返回的Observable上,或者甚至有一种方法(现在我在onNext中返回 - 但我不喜欢这样)
那么,有没有一种方法来设置代码的格式来存储.subscribe()的一个成员变量:
.observeOn(AndroidSchedulers.mainThread())
mSubscriber = .subscribe(new Subscriber<RxOkHttpResponse>() {
...
我使用1.1.0
答
的答案取决于你使用RxJava 1或2.在RxJava 1的情况下,subscribe()
将返回Subscription
实例,然后您可以调用unsubscribe()
。然而,对于RxJava 2我相信你需要添加onSubscribe()
答
这是我一直在寻找的语法:
mSubscriber = (getAuthentication.kickoff()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
).subscribe(new Subscriber<RxOkHttpResponse>() {
...
现在,我可以很容易地在我的视图模型存储mSubscriber用于清理通过的OnDestroy触发()我的活动
@John O'Reilly ...是的,但如何将该调用返回成员变量并保持相同的代码格式? – Mike6679
对不起,我删除了我的评论,因为它在我编辑它的过程中变得越来越长!移动它以回答下面。不知道我理解你的问题吗? –