android订阅管理,RXJAVA取消订阅封装-kotlin-Android

因为好几次自己想要在别的项目使用,每次都要重写一遍太麻烦,整理了一下发布到 jcenter 。

利用官方lifecycle库与kotlin语言特性。lifecycle官方 support 27+ 自带。

库代码数少于100行。

用法:

1、添加依赖

implementation 'com.sjianjun:rxutils:1.0.2'

2、代码

提供了3个Disposable的扩展方法这里使用destory演示。

class MainActivity : AppCompatActivity(), AutoDisposeEnhance {

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

//

Observable.create { }.doOnDispose {

Log.e("dispose", Exception("测试检查调用栈"))

}.subscribe().destroy(lifecycle = lifecycle)

//destroy 方法的参数由 接口 sjj.rx.AutoDisposeEnhance 提供 。

Observable.create { }.doOnDispose {

Log.e("dispose2", Exception("测试检查调用栈"))

}.subscribe().destroy()

}

override fun onResume() {

super.onResume()

}

}

说明

interface AutoDisposeEnhance {

fun Disposable.destroy(onceKey: String? = null) {

destroy(onceKey, getLifecycle())

}

fun Disposable.stop(onceKey: String? = null) {

stop(onceKey, getLifecycle())

}

fun Disposable.pause(onceKey: String? = null) {

pause(onceKey, getLifecycle())

}

fun getLifecycle():Lifecycle

}

主要声明了三个方法扩展destory、stop、pause

参数: oncekey , 如果重复的话会直接取消之前的disposeable 如果为null 则不处理

参数:lifecycle ,被绑定到的声明周期对象,通常由 activity 或者 fragment 提供,也可以自定义。

destory stop pause 三个扩展方法,表示在相应的生命周期 取消订阅。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/562993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 动画完成后不可点击事件,android – TranslateAnimation后按钮不可点击

点击后,我想移动按钮(带动画).我希望它在第一次点击时移动100个像素,底部移动100个像素,第二个100像素,第三个底部的100个像素,依此类推.我有简单的布局文件(main.xml):android:id"id/button"android:layout_width"wrap_content"android:layout…

鸿蒙系统操作界面布局,华为鸿蒙操作系统大曝光

描述华为鸿蒙操作系统大曝光5月21日,华为消费者业务CEO余承东透露,面向下一代技术而设计的华为操作系统“鸿蒙”,最早将于今秋面市。而就在前天,环球时报(Global Times)发出推文表示:有消息人士称,华为正在…

android 高德获取省市,高德地图定位获取当前地址城市街道等详细信息(全部代码)...

自动定位后弹窗信息,包含省市县镇区路门牌号(效果图如下)代码↓↓↓获取地理位置var mapObj new AMap.Map(iCenter);mapObj.plugin(AMap.Geolocation, function () {geolocation new AMap.Geolocation({enableHighAccuracy: true, // 是否使用高精度定位&#xff…

nsq Android客户端,NSQ的golang客户端简单使用

NSQ的golang客户端简单使用NSQ 是由国外的一个短链服务商bitly使用golang开发的一个消息队列系统,正好使用到了这个东西,在这里简单的记录下。获取客户端nsq的golang客户端是官方版本的go get github.com/nsqio/go-nsq即可简单的消费者和生产者使用该客户…

鸿蒙系统新手教程,鸿蒙灭神决新手入门全流程图文攻略

鸿蒙灭神决新手入门全流程图文攻略2019-03-21 15:04:13来源:天天RPG编辑:野狐禅评论(0)中后期回归主题,如果还是打不过神器2,可以先到“中级挑战”这里完成第一排的四项挑战,可以获得四件道具。从这里开始由于我们刷木…

html中websocket获取数据,如何使用websocket从数据库中获取数据来刷新视图

在标准的Web交互中,客户端(即您的Web浏览器)向您的服务器发送请求。您的服务器收到请求,然后发送回您的浏览器中显示的信息,然后终止连接。WebSockets是一种在客户端和服务器之间创建持久,双向连接的方式,但它需要两者…

流内容html,为什么,和元素属于html中的流内容?

您在引用的部分中通常会忽略这个词.他们中的大多数确实包含文本,但并非所有文本都包含文本.其中一些,如< br>和< hr>您指出的元素不包含任何内容(因此不是typical个流内容元素).Most elements that are used in the body of documents and applications are catego…

html添加工具栏,添加带有命令的工具栏 (HTML)

添加带有命令的工具栏 (HTML)03/04/2016本文内容[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发&#xff0c;请参阅 最新文档 ]ToolBar 是一个简单的控件&#xff0c;用于解决命令扩展问题。它具有一个 …

用计算机解决问题 评课稿,总结反思:二年级数学lbrack;解决问题rsqb;评课稿

二年级数学《解决问题》评课稿二年级数学《解决问题》评课稿今天上午听了一节二年级数学上册用加减混合的常识《解决问题》的课&#xff0c;受益匪浅。我觉得这节课是顺利的&#xff0c;有待我们学习跟借鉴。雷老师虽未年过五旬&#xff0c;但他不服老的敬业精神&#xff0c;以…

计算机信息科学蔺泽浩,上海交通大学计算机科学与工程系(CSE)

脑机交互的多模态疲劳驾驶检测系统本系统通过获取驾驶员的脑电信号(EEG)、眼电信号(EOG)、握力信号和Kinect图像&#xff0c;从生理信号和行为特征中提取与疲劳相关的特征&#xff0c;利用机器学习方法建立疲劳检测模型&#xff0c;实现驾驶员疲劳状态的度量与预测。与传统的基…

分布式认知在计算机应用系统,人机交互作业

1. 人机交互过程中人们经常利用的感知有哪几种&#xff1f;每种感知有什么特点&#xff1f;视觉感知、听觉感知、触觉感知三种。1)视觉感知特点&#xff1a;一方面&#xff0c;眼睛和视觉系统的物理特性决定了人类无法看到某些事物&#xff1b;另一方面&#xff0c;视觉系统进行…

word计算机桌面加密,如何给电脑的Word文件加密

如何给电脑的Word文件加密Word文件是我们在工作和生活中会频繁使用到的&#xff0c;采用适当的方法给需要保护的Word文件加密&#xff0c;可以确保信息安全。这里所讲的加密&#xff0c;是指以某种特殊的方法改变原有的信息数据&#xff0c;使得未经授权的用户即使获得了已加密…

大学计算机一级b笔记,全国计算机等级一级B Excel考试整理笔记

Excel 计算题公式、图表全国计算机等级一级B Excel笔记整理Excel计算题目 2011 -12-5 1.求和&#xff1a;Sum()&#xff1b; 2.填写排列序号:rank; 计算时先输入“”&#xff0c;在加上函数,如”rank”&#xff1b; 3.求平均值&#xff1a;average; 4.求最大值&#xff1a;max;…

梦龙即时通讯软件测试初学者,梦龙即时通讯软件

现在办公都使用社交软件来进行沟通交流&#xff0c;省时省力。梦龙即时通讯软件集企业邮箱管理、日程管理、企业通讯录以及员工互动等功能于一体。能够帮助用户在日常使用中&#xff0c;得到一个高效的体验&#xff0c;有着丰富的办公功能&#xff0c;包括文件的传送&#xff0…

web系统软件测试功能点,小程序、app、web测试的区别

APP的测试类型有• 安装卸载测试&#xff1a;确认系统能正常安装应用及使用&#xff0c;不需要时卸载及数据清除&#xff0c;• 安全测试&#xff1a;防范隐私泄露、密码加密及传输安全、权限的合理开放、数据库安全、通信安全以及安装包反编译&#xff1b;• 接口测试&#xf…

计算机动画制作 教学设计,《设置动画效果》教学设计

《设置动画效果》教学设计溧阳市外国语学校 赵萍教学目标&#xff1a;1、知识目标&#xff1a;掌握三种设置动画效果的方法。2、能力目标&#xff1a;⑴ 通过自我学习&#xff0c;培养学生的自我探索、自主学习的能力。⑵ 通过创作&#xff0c;培养学生综合运用知识的能力及创新…

软件测试除了边界值还有什么,在软件测试中,假定 X 为整数,10≤X≤100,用边界值分析法,那么 X 在测试 中应该取( )边界值...

北方猎人(cnitpm.com) 10:58:42在软件测试中,假定 X 为整数,10≤X≤100,用边界值分析法,那么 X 在测试 中应该取( )边界值.A&#xff0e;X9,X10,X100,X101 B&#xff0e;X10,X100C&#xff0e;X9,X11,X99,X101 D&#xff0e;X9,X10,X50,X100Cheryl-Annie(cnitpm.com) 10:59:15A…

计算机一级添加通讯录好友,电脑企业微信从微信好友中添加成员功能如何使用...

电脑企业微信"从微信好友中添加成员"功能如何使用腾讯视频/爱奇艺/优酷/外卖 充值4折起现在微信推出了企业微信软件&#xff0c;那么今天小编跟大家分享的是电脑企业微信"从微信好友中添加成员"功能如何使用。具体如下&#xff1a;1. 首先我们在电脑中打开…

计算机开机没有找到引导设备,电脑开机显示没有可以引导的设备

电脑是由硬件部分和软件部分构成的&#xff0c;硬件部分一般出现故障的机率不是很高&#xff0c;但是软件故障出现的机率就是非常非常的高了&#xff0c;一些能进系统的软件故障我们一般都是可以自行查资料解决&#xff0c;那么&#xff0c;开机黑屏且显示Reboot and Select Pr…

服务器镜像工作原理,镜像服务器的原理是什么,怎么工作的

镜像服务器的原理是什么&#xff0c;怎么工作的分类&#xff1a;数据恢复常见问题|最后更新&#xff1a;2018年10月22日服务器的种类很多&#xff0c;其中镜像服务器是什么您知道吗?它又有着哪些作用了?下面跟随小编一起来探讨下。镜像服务器(Mirrorserver)与主服务器的服务内…