Rxjava
1.引入依賴
github地址:
https://github.com/ReactiveX/RxJava
https://github.com/ReactiveX/RxAndroid
compile 'io.reactivex:rxjava:1.0.14'
compile 'io.reactivex:rxandroid:1.0.1'
鏈接地址
http://gank.io/post/560e15be2dca930e00da1083#toc_1
調度器:
在RxJava中,Scheduler ——調度器,相當於線程控制器,RxJava通過它來指定每一段代碼應該運行在什麼樣的線程。RxJava已經內置了幾個 Scheduler ,它們已經適合大多數的使用場景:
· Schedulers.immediate():直接在當前線程運行,相當於不指定線程。這是默認的 Scheduler。
· Schedulers.newThread():總是啓用新線程,並在新線程執行操作。
· Schedulers.io(): I/O操作(讀寫文件、讀寫數據庫、網絡信息交互等)所使用的 Scheduler。行爲模式和 newThread() 差不多,區別在於 io() 的內部實現是是用一個無數量上限的線程池,可以重用空閒的線程,因此多數情況下 io() 比 newThread() 更有效率。不要把計算工作放在 io() 中,可以避免創建不必要的線程。
· Schedulers.computation():計算所使用的 Scheduler。這個計算指的是CPU密集型計算,即不會被I/O等操作限制性能的操作,例如圖形的計算。這個 Scheduler 使用的固定的線程池,大小爲CPU核數。不要把I/O操作放在 computation() 中,否則I/O操作的等待時間會浪費CPU。
· 另外,Android還有一個專用的 AndroidSchedulers.mainThread(),它指定的操作將在Android主線程運行。
有了這幾個 Scheduler ,就可以使用 subscribeOn() 和 observeOn() 兩個方法來對線程進行控制了。
· subscribeOn():指定 subscribe() 所發生的線程,即 Observable.OnSubscribe 被激活時所處的線程。或者叫做事件產生的線程。
· observeOn():指定 Subscriber 所運行在的線程。或者叫做事件消費的線程。
//Rxlifecycle
compile 'com.trello:rxlifecycle:0.3.0'
compile 'com.trello:rxlifecycle-components:0.3.0'
Activity/Fragment需繼承RxAppCompatActivity/RxFragment,目前支持的有RxAppCompatActivity、RxFragment、RxDialogFragment、RxFragmentActivity。
一、bindToLifecycle()方法
在子類使用Observable中的compose操作符,調用,完成Observable發佈的事件和當前的組件綁定,實現生命週期同步。從而實現當前組件生命週期結束時,自動取消對Observable訂閱。
二、bindUntilEvent()方法
使用ActivityEvent類,其中的CREATE、START、 RESUME、PAUSE、STOP、 DESTROY分別對應生命週期內的方法。使用bindUntilEvent指定在哪個生命週期方法調用時取消訂閱。
http://www.cnblogs.com/liulipeng/p/5046623.html
一篇容易學習的RxJava1 --- RxJava2 的優秀教程很形象