zoukankan      html  css  js  c++  java
  • Rxlifecycle(一):使用

    Rxlifecycle使用非常方便简单,如下:

    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);
                    }
                });
    }
    ...
  • 相关阅读:
    001_jdk配置
    mysql(5.7)安装教程
    mysql(5.6)安装教程
    外网发布
    蓝桥 历届试题 分考场
    蓝桥 历届试题 合根植物
    Codeforces Round #650 (Div. 3) D : Task On The Board
    HDU 3336 Count the string
    leetcode [238. 除自身以外数组的乘积]
    leetcode [837. 新21点]
  • 原文地址:https://www.cnblogs.com/liulipeng/p/5046623.html
Copyright © 2011-2022 走看看