iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0
Mobile Development

Android studio 30天初學筆記系列 第 20

[Android Studio 30天挑戰] Day20 - 介紹RxJava2(下)

  • 分享至 

  • xImage
  •  

昨天我們介紹了RxJava2的用法,今天我們來介RxJava2其他的做法。
那接下來就來介紹其他的作法。

RxJava提供多種Observable

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", "獲取完成");
});

上一篇
[Android Studio 30天挑戰] Day19 - 介紹RxJava2(上)
下一篇
[Android Studio 30天挑戰] Day21 - 介紹Glide
系列文
Android studio 30天初學筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言