rxlifecycle 框架的使用
rxlifecycle 框架的使用
原由:實際的項目中會出現(xiàn)很多訂閱關(guān)系,那么取消訂閱的代碼也就越來越多。造成了項目很難維護(hù)。所以我們必須尋找其他可靠簡單可行的方式,也就是下面要介紹的。
-
github地址:?https://github.com/trello/RxLifecycle
-
在android studio 里面添加引用
compile 'com.trello:rxlifecycle-components:0.6.1' -
讓你的activity繼承RxActivity,RxAppCompatActivity,RxFragmentActivity
讓你的fragment繼承RxFragment,RxDialogFragment;下面的代碼就以RxAppCompatActivity舉例 -
bindToLifecycle?方法
在子類使用Observable中的compose操作符,調(diào)用,完成Observable發(fā)布的事件和當(dāng)前的組件綁定,實現(xiàn)生命周期同步。從而實現(xiàn)當(dāng)前組件生命周期結(jié)束時,自動取消對Observable訂閱。
-
上面的代碼是Observable循環(huán)的發(fā)送數(shù)字,并且在textview中顯示出來
1、沒加?compose(this.<Long>bindToLifecycle())?當(dāng)Activiry 結(jié)束掉以后,Observable還是會不斷的發(fā)送數(shù)字,訂閱關(guān)系沒有解除
2、添加compose(this.<Long>bindToLifecycle())?當(dāng)Activity結(jié)束掉以后,Observable停止發(fā)送數(shù)據(jù),訂閱關(guān)系解除。 -
從上面的例子可以看出bindToLifecycle()?方法可以使Observable發(fā)布的事件和當(dāng)前的Activity綁定,實現(xiàn)生命周期同步。也就是Activity 的 onDestroy() 方法被調(diào)用后,Observable 的訂閱關(guān)系才解除。那能不能指定在Activity其他的生命狀態(tài)和訂閱關(guān)系保持同步,答案是有的。就是bindUntilEvent()方法。這個逼裝的好累!
-
bindUntilEvent( ActivityEvent event)
-
ActivityEvent.CREATE: 在Activity的onCreate()方法執(zhí)行后,解除綁定。
-
ActivityEvent.START:在Activity的onStart()方法執(zhí)行后,解除綁定。
-
ActivityEvent.RESUME:在Activity的onResume()方法執(zhí)行后,解除綁定。
-
ActivityEvent.PAUSE: 在Activity的onPause()方法執(zhí)行后,解除綁定。
-
ActivityEvent.STOP:在Activity的onStop()方法執(zhí)行后,解除綁定。
-
ActivityEvent.DESTROY:在Activity的onDestroy()方法執(zhí)行后,解除綁定
[html]?view plaincopy - //循環(huán)發(fā)送數(shù)字??
- ????Observable.interval(0,?1,?TimeUnit.SECONDS)??
- ????????????.subscribeOn(?Schedulers.io())??
- ????????????.compose(this.<Long>bindUntilEvent(ActivityEvent.STOP?))???//當(dāng)Activity執(zhí)行Onstop()方法是解除訂閱關(guān)系??
- ????????????.observeOn(?AndroidSchedulers.mainThread())??
- ????????????.subscribe(new?Action1<Long>()?{??
- ????????????????@Override??
- ????????????????public?void?call(Long?aLong)?{??
- ????????????????????System.out.println("lifecycle-stop-"?+?aLong);??
- ????????????????????textView.setText(?""?+?aLong?);??
- ????????????????}??
- ????????????});??
-
經(jīng)過測試發(fā)現(xiàn),當(dāng)Activity執(zhí)行了onStop()方法后,訂閱關(guān)系已經(jīng)解除了。
總結(jié)
以上是生活随笔為你收集整理的rxlifecycle 框架的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2016年Android主流技术
- 下一篇: 得到当前堆栈信息的两种方式(Thread