Temel Rxjava (2)

Gürkan Kesgin
KoçSistem
Published in
2 min readOct 15, 2017

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.

--

--