Tôi muốn tạo ra một Observable
khỏi tầm nhìn nhấp chuột nghe sử dụng RxJava 2. Tôi bắt đầu từ việc thực hiện đơn giản nhất (tôi không sử dụng lambdas đây để hiển thị cho bạn các loại khác nhau trong phương pháp này):Sự khác nhau giữa RxJava 2 Cancellable và Disposable là gì?
Observable<View> viewObservable = Observable.create(new ObservableOnSubscribe<View>() {
@Override
public void subscribe(@NonNull ObservableEmitter<View> e) throws Exception {
mNewWordView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View value) {
if (!e.isDisposed()) {
e.onNext(value);
}
}
});
}
});
Sau đó, tôi nghĩ về cách đặt onClickListener
thành null nếu không cần thêm. Tôi thấy rằng có hai phương pháp với tương tự (như đối với tôi) tên:
e.setCancellable(Cancellable c);
và e.setDisposable(Disposable d);
sự khác biệt giữa họ và mà tôi nên sử dụng là gì?
Cảm ơn bạn. Tôi có nên sử dụng 'check if (! E.isDisposed())' nếu tôi sử dụng Cancellable và không được Disposed? – Gaket
Có, cuộc gọi xử lý xuôi dòng được phản ánh đúng thông qua isDisposed() bất kể bạn có tài nguyên gì. – akarnokd
Đối với trường hợp cơ bản này, bạn không thực sự cần nó, nhưng trong trường hợp bạn muốn phát ra 'onError', bạn nên kiểm tra isDisposed() vì nếu bộ phát được xử lý, lỗi sẽ được chuyển đến lỗi toàn cầu trình xử lý đổ vỡ ứng dụng Android thường bất ngờ. – akarnokd