在android 上 使用 rxjava 入門篇

來源:互聯網
上載者:User

標籤:

什麼是 rxJava?
RxJava is a Java VM implementation of Reactive Extensions: a library for composing asynchronous and event-based programs by using observable sequences.

簡單來說,rxJava 是一種 基於事件的,使用了可被觀察序列 的非同步 響應 擴充 的類庫。

這句話有這幾個意思:

  rxJava 是解決 非同步問題的。

  rxJava 是基於事件機制的。

  rxJava 是處理響應擴充的,解決 事件的響應問題(比如事件的響應在哪個線程?)。

  rxJava 是序列的。它是個有順序的隊列,按順序的,先進後出的。它對集合對象的支援很好。 

 

 

rxJava 使用了 設計模式裡的 觀察者模式 來實現。

 

引用類庫
   compile ‘io.reactivex:rxjava:1.0.14‘    compile ‘io.reactivex:rxandroid:1.0.1‘

 

代碼裡如何使用rxJava的代碼長這樣:
Observable.from(userBeans)                .map(new Func1<UserBean, String>() {                    @Override                    public String call(UserBean userBean) {                                      return String.format("%s(%s)", userBean.name, userBean.age);                    }                })                .subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(new Action1<String>() {                    @Override                    public void call(String str) {                                               alert(str);                    }                });

 

這段代碼告訴了我們: 

  Observable.from ()  建立了一個被觀察的對象。

  .map() 方法執行了轉換,將對象轉成字串

  .subscribeOn() 指示了 在哪個線程裡執行 上面的轉換操作。

  .observeOn() 指示了 在哪個線程裡執行 對結果的響應操作,比如後面的 alert 方法。

  .subscribe() 傳遞了具體的響應處理,即執行了 alert方法。

 

代碼很優雅,鏈式的寫法,很清晰的表達了代碼的行為。

 

從單個對象建立被觀察對象的示範

使用 just() 方法,指定單個對象來建立被觀察對象執行個體。

    private void doSomeOne() {        Observable.just("Hello, world!").subscribe(new Action1<String>() {            @Override            public void call(String str) {                alert(str);            }        });    }

 

從一個集合建立被觀察對象的示範

使用 from() 方法,指定一個集合來建立被觀察對象執行個體。

    private void doSomeArray() {        Observable.from(new String[]{"A", "B", "C"}).subscribe(new Action1<String>() {            @Override            public void call(String str) {                alert(str);            }        });    }

 

對象轉換的示範

我們使用 map() 方法進行轉換。下面的代碼示範了 從 UserBean數組建立被觀察對象,然後使用map()方法轉換成 字串。

    private void doSomeEntity() {        UserBean[] userBeans = new UserBean[3];        userBeans[0] = new UserBean("jo", 18);        userBeans[1] = new UserBean("ken", 9);        userBeans[2] = new UserBean("hack", 30);        //增加了map方法,轉出 實體到字串        Observable.from(userBeans).map(new Func1<UserBean, String>() {            @Override            public String call(UserBean userBean) {                return String.format("%s(%s)", userBean.name, userBean.age);            }        }).subscribe(new Action1<String>() {            @Override            public void call(String str) {                alert(str);            }        });    }

 

 

參考:

https://github.com/ReactiveX/RxJava

http://gank.io/post/560e15be2dca930e00da1083

在android 上 使用 rxjava 入門篇

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.