昨天介紹rxjava2簡單的寫法,今天會介紹rxjava2其他的做法
RxJava提供多種Observables,主要差異在於callback的類型不同,首先:
不支持back pressure,可在onNext(String s)
多次執行,完成就調用onComplete()
,在onNext(String s)執行期間發生異常則調用onError(Throwable e)
Observable.fromCallable(new Callable<String>() {
@Override
public String call() throws Exception {
return null;
}
}).subscribe(new DisposableObserver<String>() {
@Override
public void onNext(String s) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
用法跟Observable差不多,支持back pressure,在被觀察者發送事件的速度快於觀察者的處理速度時,降低被觀察者發送事件的速度。
更新資料時,只需要知道資料的更新是成功或者是失敗,無回傳值,只處理 onError(Throwable e)
或onComplete()
的事件
Completable.fromAction(new Action() {
@Override
public void run() throws Exception {
}
}).subscribe(new DisposableCompletableObserver() {
@Override
public void onComplete() {
}
@Override
public void onError(Throwable e) {
}
});
回傳值成功就調用onSuccess(String s)
,否則調用onError(Throwable e)
Single.fromCallable(new Callable<String>() {
@Override
public String call() throws Exception {
return null;
}
}).subscribe(new DisposableSingleObserver<String>() {
@Override
public void onSuccess(String s) {
}
@Override
public void onError(Throwable e) {
}
});
onSuccess(String s)
接收Maybe發出的數據,完成就調用onComplete()
,否則調用onError(Throwable e)
,onSuccess(String s)
必須執行於onComplete()
跟onError(Throwable e)
之前,否則無效。
Maybe.fromCallable(new Callable<String>() {
@Override
public String call() throws Exception {
return null;
}
}).subscribe(new DisposableMaybeObserver<String>() {
@Override
public void onSuccess(String s) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
從上方介紹的Observables中,會發現其中有fromCallable
跟fromAction
,都是建立要執行的內容,差異是:
fromCallable:有回傳值
fromAction:無回傳值