Tôi có câu hỏi liên quan đến cách hủy đăng ký một quan sát. Tôi có hai mã và tôi không thực sự chắc chắn về mã nào tốt hơn.Khi nào cần hủy đăng ký thuê bao
Ví dụ 1 -> Hủy đăng ký thuê bao một khi dòng đã hoàn tất:
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
}
}
Ví dụ 2 -> Hủy đăng ký thuê bao một lần hoạt động này bị phá hủy:
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();
}
tôi phải đề cập đến rằng tôi chỉ quan sát được sẽ phát ra một lần, hoạt động không nên đợi nhiều cuộc gọi hơn từ Đài quan sát.
Cái nào tốt hơn?
Cảm ơn trước
Tôi gặp sự cố khi nhận mã của mình (có kéo để làm mới) để làm mới lần thứ hai khi sử dụng trình kéo để làm mới trình nghe. Tôi đã xác minh rằng kéo của tôi để làm mới là làm việc một cách chính xác nhưng tập thứ hai của "observable.subscribeOn (Schedulers.newThread()). ObservOn (AndroidSchedulers.mainThread()). Đăng ký (thuê bao)" không hoạt động, chỉ đầu tiên. Bất kỳ ý tưởng? – lawonga