美文网首页
RxLifeCycle基础

RxLifeCycle基础

作者: 河马过河 | 来源:发表于2018-08-31 16:28 被阅读12次

一、RxLifeCycle使用方式

1、步骤

1、添加依赖

 implementation 'com.trello.rxlifecycle2:rxlifecycle-components:2.2.2'

2、Activity/Fragment需继承RxAppCompatActivity/RxFragment

两种方式绑定生命周期
①bindToLifecycle()
②bindUntilEvent(event)

1535698100(1).jpg

    public Flowable<Integer> getIntervalData() {
        return Flowable.create(new FlowableOnSubscribe<Integer>() {
            @Override
            public void subscribe(FlowableEmitter<Integer> emitter) throws Exception {
                for (int i = 1; ; i++) {
                    LogUtils.error(TAG, "getIntervalData--emitter--:" + Thread.currentThread().getName() + "--:" + i + "-----iscancelled:" + emitter.isCancelled());
                    LogUtils.error(TAG, "getIntervalData--emitter--:" + Thread.currentThread().getName() + "--:" + TimeUtils.getNowString() + "-----request:" + emitter.requested());
                    if (emitter.isCancelled()) {
                        break;
                    }else {
                        while (emitter.requested() == 0) {

                        }
                    }
                    emitter.onNext(i);

                }
            }
        }, BackpressureStrategy.ERROR);
    }
  public void interval() {
        Disposable disposable = model.getIntervalData()
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .compose(((RxLifeCycleActivity) view).<Integer>bindToLifecycle())
                .subscribe(new Consumer<Integer>() {
                    @Override
                    public void accept(Integer aLong) throws Exception {
                        LogUtils.error(TAG, "rxJavaConcatExample--Consumer--:" + Thread.currentThread().getName() + "--:" + aLong);
                    }
                });
    }
public void intervalRxLifeCycle(ActivityEvent event) {
        Disposable disposable = model.getIntervalData()
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .compose(((RxLifeCycleActivity) view).<Integer>bindUntilEvent(event))
                .subscribe(new Consumer<Integer>() {
                    @Override
                    public void accept(Integer aLong) throws Exception {
                        LogUtils.error(TAG, "rxJavaConcatExample--Consumer--:" + Thread.currentThread().getName() + "--:" + aLong);
                    }
                });
    }

总结

1、在onStart方法中绑定,在onStop方法被调用后就会解除绑定,以此类推。
2、如果在onPause/onStop方法中绑定,那么就会在它的下一个生命周期方法(onStop/onDestory)被调用后解除绑定
3、如果要控制在某个生命周期结束,就直接使用bindUntilEvent(event)


河马过河微信公众号.jpg

相关文章

  • RxLifeCycle基础

    一、RxLifeCycle使用方式 1、步骤 1、添加依赖 2、Activity/Fragment需继承RxApp...

  • Rxlifecycle 源码解析

    Rxlifecycle (https://github.com/trello/RxLifecycle)是基于RxJ...

  • rxLifecycle 处理rxjava生命周期

    1.首先,导入相关包compile 'com.trello.rxlifecycle2:rxlifecycle:2....

  • 为什么不使用 RxLifecycle?

    本文为翻译文章,原文连接:为什么不使用RxLifecycle Why Not RxLifecycle? Hello...

  • RxLifecycle原理分析

    RxLifecycle源码地址 RxLifecycle有两种使用方法:1、bindToLifecycle直接绑定生...

  • RxLifecycle

    RxLifecycle用来解决由于rxjava可能造成的内存泄露,未使用RxLifecycle时:使用rxjava...

  • RxLifecycle

    为什么要用Rxlifecycle 。使用Rxlifecycle的原因? 解决RxJava使用中的内存泄漏问题。例如...

  • RxLifeCycle

    介绍 在 内存泄漏 中介绍了使用 Disposable 来避免内存泄漏。但这个简单的方法需要重载 onDestor...

  • Android开发常用依赖

    ButterKnife OkHttp Retrofit RxJava RxLifecycle Glide Even...

  • RxLifecycle介绍与应用

    Github地址:https://github.com/trello/RxLifecycle待续

网友评论

      本文标题:RxLifeCycle基础

      本文链接:https://www.haomeiwen.com/subject/nfwswftx.html