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);
                    }
                });
    }
    ...
  • 相关阅读:
    java map使用比较
    mysql无法启动问题 Found option without preceding group in config file
    B站freecoder的计算机基础讲解
    周问题记录
    使用baksmali及smali修改apk并打包
    安卓APP动态调试-IDA实用攻略
    IDA远程调试 在内存中dump Dex文件
    关于ARM的B,BL跳转指令
    IDA 远程调试 Android so
    IDA远程调试so库JNI_Onload函数
  • 原文地址:https://www.cnblogs.com/liulipeng/p/5046623.html
Copyright © 2011-2022 走看看