博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Subscriber 与 Observer 区别
阅读量:7278 次
发布时间:2019-06-30

本文共 755 字,大约阅读时间需要 2 分钟。

hot3.png

,在 RxJava 的 subscribe 过程中,Observer 也总是会先被转换成一个 Subscriber 再使用。所以如果你只想使用基本功能,选择 Observer 和 Subscriber 是完全一样的。它们的区别对于使用者来说主要有两点: onStart(): 这是 Subscriber 增加的方法。它会在 subscribe 刚开始,而事件还未发送之前被调用,可以用于做一些准备工作,例如数据的清零或重置。这是一个可选方法,默认情况下它的实现为空。需要注意的是,如果对准备工作的线程有要求(例如弹出一个显示进度的对话框,这必须在主线程执行), onStart() 就不适用了,因为它总是在 subscribe 所发生的线程被调用,而不能指定线程。要在指定的线程来做准备工作,可以使用 doOnSubscribe() 方法,具体可以在后面的文中看到。 unsubscribe(): 这是 Subscriber 所实现的另一个接口 Subscription 的方法,用于取消订阅。在这个方法被调用后,Subscriber 将不再接收事件。一般在这个方法调用前,可以使用 isUnsubscribed() 先判断一下状态。 unsubscribe() 这个方法很重要,因为在 subscribe() 之后, Observable 会持有 Subscriber 的引用,这个引用如果不能及时被释放,将有内存泄露的风险。所以最好保持一个原则:要在不再使用的时候尽快在合适的地方(例如 onPause() onStop() 等方法中)调用 unsubscribe() 来解除引用关系,以避免内存泄露的发生。

转载于:https://my.oschina.net/sunhacker/blog/755107

你可能感兴趣的文章
微信支付问题
查看>>
购买类目的概率预测
查看>>
Ajax Step By Step2
查看>>
codeforces 701 B. Cells Not Under Attack
查看>>
当同时安装Python2和Python3后,如何兼容并切换使用详解(比如pip使用)
查看>>
Creating a Custom Page Layout in SharePoint 2013
查看>>
mysql foreignkey
查看>>
Django 中的自定义分页标签
查看>>
[转]ASP.NET自定义控件复杂属性声明持久性浅析
查看>>
PAT (Basic Level) Practise (中文)-卡拉兹(Callatz)猜想
查看>>
第八周进度总结
查看>>
axios 注意点
查看>>
刷新ListView刷新时的闪烁问题
查看>>
cuda c例程学习——eigenvalues(1)
查看>>
通过本地文件数据库查询手机归属地
查看>>
uva 10152 ShellSort
查看>>
前端之放大镜
查看>>
民航飞机专业词汇
查看>>
数据类型和变量
查看>>
通过excel快速拼接SQL
查看>>