Rx java 取消订阅Observable Rxjava
我对Rx java observables非常陌生,所以我不确定何时取消订阅。这就是我的代码实现Rx java 取消订阅Observable Rxjava,rx-java,observable,rx-java2,subscription,unsubscribe,Rx Java,Observable,Rx Java2,Subscription,Unsubscribe,我对Rx java observables非常陌生,所以我不确定何时取消订阅。这就是我的代码实现 Observable<String> sampleObservable = Observable.just(accountNum); Subscription sampleSub = sampleObservable.subscribeOn(Schedulers.io()).subscribe(new Action1<String>() {
Observable<String> sampleObservable = Observable.just(accountNum);
Subscription sampleSub = sampleObservable.subscribeOn(Schedulers.io()).subscribe(new Action1<String>() {
@Override
public void call(String accountNum) {
try {
//call backend api
AccountResponse response = getAccountDetails(accountNum);
logger.debug("Account response :" + response.toString());
} catch (Exception e) {
logger.error(e.getMessage());
}
}
});
Observable sampleObservable=Observable.just(accountNum);
Subscription sampleSub=sampleObservable.SubscripteBeon(Schedulers.io()).Subscription(new Action1()){
@凌驾
公共作废调用(字符串accountNum){
试一试{
//调用后端api
AccountResponse response=getAccountDetails(accountNum);
debug(“帐户响应:+response.toString());
}捕获(例外e){
logger.error(例如getMessage());
}
}
});
我可以在“sampleSub.unsubscribe()”结尾处取消订阅吗。我在这里担心的是,如果“getAccountDetails(accountNum)”调用需要时间才能完成,并且代码取消订阅,那么它会取消/影响“getAccountDetails(accountNum)”调用吗?如果是,那么有没有办法在通话结束后取消预订
Observable<String> sampleObservable = Observable.just(accountNum);
Subscription sampleSub = sampleObservable.subscribeOn(Schedulers.io()).subscribe(new Action1<String>() {
@Override
public void call(String accountNum) {
try {
//call backend api
AccountResponse response = getAccountDetails(accountNum);
logger.debug("Account response :" + response.toString());
} catch (Exception e) {
logger.error(e.getMessage());
}
}
});
//unsubscribing
sampleSub.unsubscribe();
Observable sampleObservable=Observable.just(accountNum);
Subscription sampleSub=sampleObservable.SubscripteBeon(Schedulers.io()).Subscription(new Action1()){
@凌驾
公共作废调用(字符串accountNum){
试一试{
//调用后端api
AccountResponse response=getAccountDetails(accountNum);
debug(“帐户响应:+response.toString());
}捕获(例外e){
logger.error(例如getMessage());
}
}
});
//退订
sampleSub.unsubscribe();
如前所述
unsubscribe()停止接收订阅服务器上的通知
在收到此订阅时注册的
这意味着,如果不再需要接收数据,可以调用此方法。在序列结束之前停止接收数据。例如,当您在屏幕上时,您可以观察服务器上的数据,但当您关闭屏幕时,您可以从该源取消订阅。您可以处理,在Rx api链中,您将获得名为doOnSubscribe(一次性)的乐趣,存储该一次性数据并调用disposable.dispose(),这将清除订阅 或 无论何时,只要你订阅了stream,它就会给你一次性的回报,使用它并处理它
(无论哪种方式你都可以做到)不会的。您需要通过Observable::create和Observable::flatMap正确取消作业。并在Observable::create中设置cancalable。如果代码本身是RxJava1,为什么会有RxJava2标记?