Android RxJava,RxAndroid,rxlifecycle2基本使用
阿新 • • 發佈:2019-02-20
Rx系列成熟已經很久了,許多專案也都用到了,也不解釋什麼了,小編在去年就get過了,一直沒有時間寫今天就簡單的介紹一下基本使用。
首先依賴
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.1.0'
還要依賴rxlifecycle2主要防止Rx使用不好導致記憶體洩漏,繫結生命週期來取消訂閱
compile 'com.trello.rxlifecycle2:rxlifecycle:2.1.0' compile 'com.trello.rxlifecycle2:rxlifecycle-components:2.1.0'
首先看一下程式碼
//建立釋出者
Observable<Object> observable=Observable.create(new ObservableOnSubscribe<Object>() { @Override public void subscribe(@NonNull ObservableEmitter<Object> emitter) throws Exception { emitter.onNext("shabi");//IO執行緒操作通知觀察者傳遞“shabi” } }) //開啟IO執行緒其下面的方法都在IO執行緒中執行,或者在Schedulers.newThread()開一個新的執行緒 //如果多個方法想切換執行緒只需要在對應方法是在新增一個.subscribeOn()即可 .subscribeOn(Schedulers.io()) //建立觀察者 Observe observe=new Observer<Object>() { public void onSubscribe(Disposable d) { } //成功返回資訊response值為shabi public void onNext(Object response) { } public void onError(Throwable e) { } public void onComplete() { } } //兩者繫結observeOn(AndroidSchedulers.mainThread())切回主執行緒 observable.observeOn(AndroidSchedulers.mainThread()) .subscribe(observe);
rxlifecycle2繫結也很簡單:只需繼承rxlifecycle2提供的activity即可例如RxAppCompatActivity,RxActivity等,然後在釋出者後面新增.compose(lifecycleProvider.bindToLifecycle())),或者 .compose(bindUntilEvent(activityEvent))); activityEvent填入ActivityEvent裡面的列舉對應生命週期即可。程式碼如下
Observable.create(new ObservableOnSubscribe<Object>() { @Override public void subscribe(@NonNull ObservableEmitter<Object> emitter) throws Exception { doChildThread(emitter); } }).subscribeOn(Schedulers.io()) .compose(lifecycleProvider.bindToLifecycle());
另外RxAndroid 還有一些操作符,像just,formArray,timer等,等下一片講解。