android rxandroid異步消息處理機制

RxAndroid是RxJava的一個變體,它們都屬於函數響應式編程

Rx表示響應式編程, 使用觀察者模式, 以觀察者(Observer)和訂閱者(Subscriber)爲基礎的異步響應方式. 在Android編程時, 經常會使用異步線程處理耗時任務, RxAndroid是比較優雅的選擇.

RxAndroid有什麼作用呢?

1、函數響應式編程
2、異步
3、事件驅動(事件作爲可觀察序列)
4、基於觀察者模式
5、組合式
6、專門出錯處理
7、適用於處理併發問題

首先需要添加依賴:他們都源於reactivex

compile ‘io.reactivex:rxjava:1.3.0’
compile ‘io.reactivex:rxandroid:1.0.1’

下面來說下步驟:
//1、創建一個觀察者 oberver(事件訂閱者)
//2、創建一個被觀察者實例 Observable(被觀察者)
//3、讓被觀察者去添加訂閱者 Subscription(事件訂閱者)

     //1 創建一個觀察者
        observer = new Observer<WaresBean>() {
            @Override
            public void onCompleted() {
                //控制進度條
            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onNext(WaresBean s) {
                 //做獲取數據的處理
                Log.e(TAG, "onNext: "+s.getCopyright() );
            }
        };
     //2創建一個被觀察者
         observable = Observable.create(new Observable.OnSubscribe<WaresBean>(){


              @Override
              public void call(final Subscriber<? super WaresBean> subscriber) {
                  //添加數據
                  getActivity().runOnUiThread(new Runnable() {
                      @Override
                      public void run() {
                          RetrofitUtil.getInstance().getWaresHot1(new retrofit2.Callback<WaresBean>() {
                              @Override
                              public void onResponse(Call<WaresBean> call, Response<WaresBean> response) {
                                  WaresBean body = response.body();
                                  subscriber.onNext(body);

                              }

                              @Override
                              public void onFailure(Call<WaresBean> call, Throwable t) {

                              }
                          });

                      }
                  });
              }
          });
      //3添加訂閱者,聯網獲取數據
        observable.subscribeOn(Schedulers.io());//設置在子線程完成 subscribe 操作
        observable.observeOn(AndroidSchedulers.mainThread());//設置在哪完成observe操作
        observable.subscribe(observer);

            }

總結:這樣使代碼變得更簡潔。。。

發佈了42 篇原創文章 · 獲贊 28 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章