昨天我們介紹了RxJava2的用法,今天我們來介RxJava2其他的做法。
那接下來就來介紹其他的作法。
1.Observer
適合用在多次執行的內容例如迴圈,每一次執行迴圈會進入onNext(T),全部完成時進入onComplete()。
public void onSubscribe(Disposable d) {
Log.e("Note", "獲取 subscribe");
}
@Override
public void onNext(post post) {
Log.e("Note", "獲取資料");
}
@Override
public void onError(Throwable e) {
Log.e("Note", "獲取失敗");
}
@Override
public void onComplete() {
Log.e("Note", "獲取完成");
}
2.Completable
適合用在執行的內容沒有回傳值,只要知道成功或失敗就好的時候,在callback有onComplete()和onError(Throwable e)兩個方法,其中onComplete()是沒有參數的表示執行完不會有回傳值。
public void onSubscribe(Disposable d) {
Log.e("Note", "獲取 subscribe");
}
@Override
public void onComplete() {
Log.e("Note", "獲取完成");
}
@Override
public void onError(Throwable e) {
Log.e("Note", "獲取失敗");
}
});
3.Maybe
適合用在不一定有回傳值時,例如資料庫查詢,如果有撈到資料會進入onSuccess(T),否則onComplete(),兩者互斥只會發生其中一種。
@Override
public void onSubscribe(Disposable d) {
Log.e("Note", "獲取 subscribe");
}
@Override
public void onSuccess(post post) {
Log.e("Note", "獲取資料");
}
@Override
public void onError(Throwable e) {
Log.e("Note", "獲取失敗");
}
@Override
public void onComplete() {
Log.e("Note", "獲取完成");
}
});
4.Single
用在執行完一定要有回傳值時,例如API抓資料時一定要有Json內容回傳,成功即進入onSuccess(T)。
@Override
public void onSubscribe(Disposable d) {
Log.e("Note", "獲取 subscribe");
}
@Override
public void onSuccess(post post) {
Log.e("Note", "獲取資料");
}
@Override
public void onError(Throwable e) {
Log.e("Note", "獲取失敗");
}
});
5.Flowable
跟上面的Observable一樣適合用在多次執行,callback也一模一樣,不同的是Flowable有支援backpressure,當資料發送的速度快過於處理速度時,可以讓發送速度減緩。
@Override
public void onSubscribe(Subscription s) {
Log.e("Note", "獲取 subscribe");
}
@Override
public void onNext(post post) {
Log.e("Note", "獲取資料");
}
@Override
public void onError(Throwable t) {
Log.e("Note", "獲取失敗");
}
@Override
public void onComplete() {
Log.e("Note", "獲取完成");
});