Observable的創建

  • Observable的創建
    1.使用create( ),最基本的創建方式:
normalObservable = Observable.create(new Observable.OnSubscribe<String>() {
    @Override
    public void call(Subscriber<? super String> subscriber) {
        subscriber.onNext("create1"); //發射一個"create1"的String
        subscriber.onNext("create2"); //發射一個"create2"的String
        subscriber.onCompleted();//發射完成,這種方法需要手動調用onCompleted,纔會回調Observer的onCompleted方法
    }});

2.使用just( ),將爲你創建一個Observable並自動爲你調用onNext( )發射數據:

justObservable = Observable.just("just1","just2");//依次發送"just1""just2"

3.使用from( ),遍歷集合,發送每個item:

List<String> list = new ArrayList<>();
list.add("from1");
list.add("from2");
list.add("from3");
fromObservable = Observable.from(list);  //遍歷list 每次發送一個
/** 注意,just()方法也可以傳list,但是發送的是整個list對象,而from()發送的是list的一個item** /

4.使用defer( ),有觀察者訂閱時才創建Observable,並且爲每個觀察者創建一個新的Observable:

deferObservable = Observable.defer(new Func0<Observable<String>>() {
    @Override
    //注意此處的call方法沒有Subscriber參數
    public Observable<String> call() {
        return Observable.just("deferObservable");
    }});

5.使用interval( ),創建一個按固定時間間隔發射整數序列的Observable,可用作定時器:

intervalObservable = Observable.interval(1, TimeUnit.SECONDS);//每隔一秒發送一次

6.使用range( ),創建一個發射特定整數序列的Observable,第一個參數爲起始值,第二個爲發送的個數,如果爲0則不發送,負數則拋異常:

rangeObservable = Observable.range(10, 5);//將發送整數10,11,12,13,14

7.使用timer( ),創建一個Observable,它在一個給定的延遲後發射一個特殊的值,等同於Android中Handler的postDelay( )方法:

timeObservable = Observable.timer(3, TimeUnit.SECONDS);  //3秒後發射一個值

8.使用repeat( ),創建一個重複發射特定數據的Observable:

repeatObservable = Observable.just("repeatObservable").repeat(3);//重複發射3次


轉自:Weavey
鏈接:https://www.jianshu.com/p/5e93c9101dc5
來源:簡書

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章