我有一個關於如何取消訂閱observable的問題。我有兩個代碼,我不確定哪一個更好。何時取消訂閱
例1 - >退訂用戶一旦流已完成:
Subscriber<String> subscriber = new Subscriber<String>() {
@Override
public void onCompleted() {
progressdialog.dissmiss();
unsubscribe();
}
@Override
public void onError(Throwable e) {
progressdialog.dissmiss();
}
@Override
public void onNext(String s) {
// do something with data
}
}
例2 - >取消一旦活動被破壞訂閱:
private void test(){
Subscriber<String> subscriber = new Subscriber<String>() {
@Override
public void onCompleted() {
progressdialog.dissmiss();
}
@Override
public void onError(Throwable e) {
progressdialog.dissmiss();
}
@Override
public void onNext(String s) {
// do something with data
}
};
subscription = BackendRequest.login(loginRequest)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(subscriber);
compositeSubscription.add(subscription);
}
@Override
protected void onDestroy() {
super.onDestroy();
this.subscription.unsubscribe();
}
我不得不提到我的可觀察者只會發射一次,該活動不應該等待來自Observable的更多呼叫。
哪一個更好?
在此先感謝
我有麻煩讓我的代碼(用拉來刷新)刷新第二次時使用拉刷新監聽器。我已經驗證我的拉動刷新工作正常,但第二套「observable.subscribeOn(Schedulers.newThread())。observeOn(AndroidSchedulers.mainThread())。subscribe(subscriber)」不工作,只有第一套。有任何想法嗎? – lawonga