Temel Rxjava (2)
Observable — Single — Completable — Maybe
Bir önceki yazımda observable nedir nasıl kullanılırdan bahsetmiştim . Şimdi ise Observable yerine kullanılabilecek diğer dinleyici türlerine bir göz atalım .
Observable -> Birden fazla kez dinleyici tetiklenecek ise kullanılır . Bu yüzden onNext , onComplete adında iki metodu vardır . Her yayınlamada onNext tetiklenirken tüm akış bittiğinde ise onComplete tetiklenir .
Observable
.fromArray(“Hello”, “Ardahan”)
.subscribe(new Observer() {
@Override
public void onSubscribe(Disposable d) {} @Override
public void onNext(Object o) {
Log.d(Tag, o);
} @Override
public void onError(Throwable e) {} @Override
public void onComplete() {}
});
Single -> Dinleyici sadece bir kez tetiklenecek ise kullanılır . Bu yüzden onSuccess methodu mevcuttur .
Single
.create(new SingleOnSubscribe() {
@Override
public void subscribe(SingleEmitter e) throws Exception {
e.onSuccess("Hello"); }
})
.subscribe(new SingleObserver() {
@Override
public void onSubscribe(Disposable d) {} @Override
public void onSuccess(Object o) {
Log.d(Tag, o);
} @Override
public void onError(Throwable e) {}
});
Completable → Single ile aynı gibi görünsede burada dinleyici tetiklenirken observable dan herhangi bir değer beklenmez . Arkaplanda bir işlem gerçekleştirilir ama sadece bitip bitmediğiyle ilgilenilir .
Completable
.create(new CompletableOnSubscribe() {
@Override
public void subscribe(CompletableEmitter e) throws Exception {
e.onComplete();
}
})
.subscribe(new CompletableObserver() {
@Override
public void onSubscribe(Disposable d) {} @Override
public void onComplete() {
Log.d(Tag, "done");
} @Override
public void onError(Throwable e) {}
});
Maybe -> Single ile Completable birleşimi gibidir . Hem onSuccess hem de onComplete methodları mevcut . Yani hiçbir sonuç dönmeyedebilir , tek bir sonuç dönedebilir .
Maybe
.create(new MaybeOnSubscribe() {
@Override
public void subscribe(MaybeEmitter e) throws Exception {
e.onSuccess("Hello");
// e.onComplete();
}
})
.subscribe(new MaybeObserver() {
@Override
public void onSubscribe(Disposable d) {} @Override
public void onSuccess(String s) {
Log.d(Tag, s);
} @Override
public void onError(Throwable e) {} @Override
public void onComplete() {
Log.d(Tag, "done");
}
});
Yazının devamına linkten erişebilirsiniz.