Rxlifecycle(一):使用
2015-12-14 21:36
381 查看
Rxlifecycle使用非常方便简单,如下:
Components包中包含RxActivity、RxFragment等等,可以用Rxlifecycle提供的,也可以自定义。
1.手动设置取消订阅的时机,例子1、例子3
2.绑定生命周期,自动取消订阅,例子2
1.集成
build.gradle添加//Rxlifecycle compile 'com.trello:rxlifecycle:0.3.1' compile 'com.trello:rxlifecycle-components:0.3.1' //Rxjava compile 'io.reactivex:rxjava:1.0.16'
Components包中包含RxActivity、RxFragment等等,可以用Rxlifecycle提供的,也可以自定义。
2.Sample解析
官方sample源码: 两种使用方法:1.手动设置取消订阅的时机,例子1、例子3
2.绑定生命周期,自动取消订阅,例子2
public class MainActivity extends RxAppCompatActivity { //Note:Activity需要继承RxAppCompatActivity,fragment需要继承RxFragment,等等 //可以使用的组件在components包下面 private static final String TAG = "RxLifecycle"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(TAG, "onCreate()"); setContentView(R.layout.activity_main); // Specifically bind this until onPause() //Note:例子1: Observable.interval(1, TimeUnit.SECONDS) .doOnUnsubscribe(new Action0() { @Override public void call() { Log.i(TAG, "Unsubscribing subscription from onCreate()"); } }) //Note:手动设置在activity onPause的时候取消订阅 .compose(this.<Long>bindUntilEvent(ActivityEvent.PAUSE)) .subscribe(new Action1<Long>() { @Override public void call(Long num) { Log.i(TAG, "Started in onCreate(), running until onPause(): " + num); } }); } @Override protected void onStart() { super.onStart(); Log.d(TAG, "onStart()"); //Note:例子2: // Using automatic unsubscription, this should determine that the correct time to // unsubscribe is onStop (the opposite of onStart). Observable.interval(1, TimeUnit.SECONDS) .doOnUnsubscribe(new Action0() { @Override public void call() { Log.i(TAG, "Unsubscribing subscription from onStart()"); } }) //Note:bindToLifecycle的自动取消订阅示例,因为是在onStart的时候调用,所以在onStop的时候自动取消订阅 .compose(this.<Long>bindToLifecycle()) .subscribe(new Action1<Long>() { @Override public void call(Long num) { Log.i(TAG, "Started in onStart(), running until in onStop(): " + num); } }); } @Override protected void onResume() { super.onResume(); Log.d(TAG, "onResume()"); //Note:例子3: // `this.<Long>` is necessary if you're compiling on JDK7 or below. // If you're using JDK8+, then you can safely remove it. Observable.interval(1, TimeUnit.SECONDS) .doOnUnsubscribe(new Action0() { @Override public void call() { Log.i(TAG, "Unsubscribing subscription from onResume()"); } }) //Note:手动设置在activity onDestroy的时候取消订阅 .compose(this.<Long>bindUntilEvent(ActivityEvent.DESTROY)) .subscribe(new Action1<Long>() { @Override public void call(Long num) { Log.i(TAG, "Started in onResume(), running until in onDestroy(): " + num); } }); } ...
相关文章推荐
- 20151214--JSTL
- jquery获取select选择的显示值
- js window.open() 父窗口与子窗口的互相调用(未必有用)
- I NEED A OFFER! 动态规划 01 背包
- 1452: [JSOI2009]Count
- CDH5.5上安装Rhadoop,RStudio server版初始化SparkR
- css权威指南-基本视觉格式化(水平与垂直)
- javascript隐藏和显示元素
- 三个容易混淆的jquery选择器
- 三个容易混淆的jquery选择器
- [Servlet&JSP] 过滤器的使用
- 【我的JS第三本】JavaScript_DOM编程艺术第二版读书笔记
- EF+MVC+Bootstrap 项目实践 Day6
- 【JavaScript】(7)——JavaScript与Ajax交互
- How is deep learning different from multilayer perceptron?
- PhantomJS 和Selenium模拟页面js点击
- 【Javascript】二维数组
- HTML一些基本的常用标签
- AngularJS指令详解
- 依赖注入的javascript实现