- 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
來源:簡書