王学岗移动架构28——RXJava2响应式编程框架设计(三)

背压,上下游在不同的线程,上游发送的数据多余下游的处理,导致时间越来越多,最后导致OOM(数据是放在缓存池中);
在这里插入图片描述

在这里插入图片描述
RxJava 生命周期
https://github.com/trello/RxLifecycle
如果我们在第一个界面中使用了RxJava,那么我们跳转到第二个界面的时候,RxJava仍在运行,仍在发送数据。这样activity就泄露了。
管理生命周期,在Activity中添加一个透明的fragment.
添加依赖

implementation 'com.trello.rxlifecycle3:rxlifecycle:3.0.0'

// If you want to bind to Android-specific lifecycles
implementation 'com.trello.rxlifecycle3:rxlifecycle-android:3.0.0'

// If you want pre-written Activities and Fragments you can subclass as providers
implementation 'com.trello.rxlifecycle3:rxlifecycle-components:3.0.0'

以上三个依赖,对应的是androidx。
继承RxAppCompatActivity或RxFragmentActivity等等,fragment也提供了相应的继承类

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
    }
}

我们使用compose操作符来绑定其生命周期,这里我们使用bindUntilEvent绑定,传入的参数有六种,对应activity的生命周期, CREATE, START, RESUME, PAUSE, STOP, DESTROY,我们想让其在什么时候取消订阅就传入对应的生命周期就好了,如以下例子为当生命周期处于stop的时候,取消订阅
compose((RxAppCompatActivity)context.bindUntilEvent(ActivityEvent.STOP))

使用bindToLifecycle方法绑定,这种方法跟随者activity的生命周期,当activity销毁的时候取消订阅
compose(baseApi.getActivity().bindToLifecycle())
在Rxjava中,compose操作符可以用来自定义操作符

发布了208 篇原创文章 · 获赞 15 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qczg_wxg/article/details/100191533