rxlifecycle 框架的使用
rxlifecycle 框架的使用
github地址: https://github.com/trello/RxLifecycle
在android studio 里面添加引用
compile 'com.trello:rxlifecycle-components:0.6.1'
让你的activity继承
RxActivity
,RxAppCompatActivity
,RxFragmentActivity
让你的fragment继承RxFragment
,RxDialogFragment
;下面的代码就以RxAppCompatActivity
举例bindToLifecycle
方法
在子类使用Observable中的compose操作符,调用,完成Observable发布的事件和当前的组件绑定,实现生命周期同步。从而实现当前组件生命周期结束时,自动取消对Observable订阅。
- public class MainActivity extends RxAppCompatActivity {
- TextView textView ;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- textView = (TextView) findViewById(R.id.textView);
- //循环发送数字
- Observable.interval(0, 1, TimeUnit.SECONDS)
- .subscribeOn( Schedulers.io())
- .compose(this.<Long>bindToLifecycle()) //这个订阅关系跟Activity绑定,Observable 和activity生命周期同步
- .observeOn( AndroidSchedulers.mainThread())
- .subscribe(new Action1<Long>() {
- @Override
- public void call(Long aLong) {
- System.out.println("lifecycle--" + aLong);
- textView.setText( "" + aLong );
- }
- });
- }
- }
上面的代码是Observable循环的发送数字,并且在textview中显示出来
1、没加compose(this.<Long>bindToLifecycle())
当Activiry 结束掉以后,Observable还是会不断的发送数字,订阅关系没有解除
2、添加compose(this.<Long>bindToLifecycle())
当Activity结束掉以后,Observable停止发送数据,订阅关系解除。从上面的例子可以看出
bindToLifecycle()
方法可以使Observable发布的事件和当前的Activity绑定,实现生命周期同步。也就是Activity 的 onDestroy() 方法被调用后,Observable 的订阅关系才解除。那能不能指定在Activity其他的生命状态和订阅关系保持同步,答案是有的。就是bindUntilEvent()
方法。这个逼装的好累!bindUntilEvent( ActivityEvent event)
ActivityEvent.CREATE
: 在Activity的onCreate()方法执行后,解除绑定。ActivityEvent.START
:在Activity的onStart()方法执行后,解除绑定。ActivityEvent.RESUME
:在Activity的onResume()方法执行后,解除绑定。ActivityEvent.PAUSE
: 在Activity的onPause()方法执行后,解除绑定。ActivityEvent.STOP
:在Activity的onStop()方法执行后,解除绑定。ActivityEvent.DESTROY
:在Activity的onDestroy()方法执行后,解除绑定[html] view plaincopy- //循环发送数字
- Observable.interval(0, 1, TimeUnit.SECONDS)
- .subscribeOn( Schedulers.io())
- .compose(this.<Long>bindUntilEvent(ActivityEvent.STOP )) //当Activity执行Onstop()方法是解除订阅关系
- .observeOn( AndroidSchedulers.mainThread())
- .subscribe(new Action1<Long>() {
- @Override
- public void call(Long aLong) {
- System.out.println("lifecycle-stop-" + aLong);
- textView.setText( "" + aLong );
- }
- });
经过测试发现,当Activity执行了onStop()方法后,订阅关系已经解除了。
rxlifecycle 框架的使用相关推荐
- RxJava 和 RxAndroid 三(生命周期控制和内存优化)
前言:对Rxjava.Rxandroid不了解的同学可以先看看 RxJava 和 RxAndroid RxJava 和 RxAndroid 二(操作符的使用) RxJava使我们很方便的使用链式编程, ...
- 一款最流行的MVPArms MVP快速集成框架Retoift,Okhttp,RxCache,Gson,RxLifeCycle, Dagger2,Rxjava,ImageLoader
今年的Android技术圈中MVP,Dagger2,Rxjava,Retrofit这些词汇非常火,随便打开一个技术论坛都充斥着大量的关于这些技术的文章,Github也充斥着各种以基于MVP+Retro ...
- 15类Android通用流行框架
15类Android通用流行框架 Android流行框架 缓存 DiskLruCache Java实现基于LRU的磁盘缓存 图片加载 Android Universal Image Loader 一个 ...
- Android开发常用开源框架2
JumpingBeans lottie-android Android-ProgressBarWidthNumber JJSearchViewAnim 一个炫酷的SearchView搜索动画库 Tex ...
- mvp架构 java_GitHub - AnthonyCoder/MvpForJava: 一个可直接快速引入的 Java 版本的模块化 MVP 框架...
使用Java构建的一个模块化的MVP的项目 个人项目仅供学习使用,感谢以下开放Api: Demo简介 该 Demo 更加详细的封装思路,请点击文章如何既装逼又优雅的设计一个模块化的MVP架构 提供给初 ...
- Android常用开源框架
快速索引 框架名称 上榜关键字 1.Retrofit 网络 2.okhttp 网络 3.Butter Knife 代码模板 4.MPAndroidChart 图表 5.glide 图片 6.leakc ...
- [Android Pro] 终极组件化框架项目方案详解
cp from : https://blog.csdn.net/pochenpiji159/article/details/78660844 前言 本文所讲的组件化案例是基于自己开源的组件化框架项目 ...
- Android 2018优秀开源框架整理收藏
中级.高级.资深工程师 知其然知其不可然 <框架百大排行榜>里所提到的流行词.流行术语--使用能力.融会贯通其原理.讲解框架能力的高低,将让你不断的在这三个级别徘徊: 会有意识的合并榜单里 ...
- 2018年android常用的框架介绍
转载地址:http://blog.csdn.net/RuingMan/article/details/73546718 http://www.cnblogs.com/jincheng-yangchao ...
最新文章
- 前端之css基础学习(更正版)
- spark on yarn 完全分布式_Apache Spark探秘:三种分布式部署方式比较
- 一图解明Android Studio项目文件结构各部分作用
- html表格转换为csv,python实现将html表格转换成CSV文件的方法
- 再想想-----***
- Linux学习总结(七十四)自动化运维之ansible
- 应用程序不被系统杀死
- Linux实战教学笔记29:MySQL数据库企业级应用实践
- kmeans算法详解与spark实战
- 多个PDF合并后页面大小不一
- linux tracker服务器搭建,linux 下 BT Tracker服务器搭建
- ads1115的程序,不知道问题出在哪里,一直读出数据都是0。大佬们帮忙看看,感激不尽
- LINUX下更新flash
- hpgs2wnd.exe
- 阿里云被攻击的处理方法
- HTML5 table表格合并单元格和合并边框
- 如何求地球上两点之间的最短距离_例谈平行线上两动点之间距离最短问题
- 【npm】npm发布测试(beta)版和正式版
- 微信小程序轮子 - 调起摄像头拍照并在页面预览(身份证拍照 / 人像拍照等等)
- 逆风飞扬 吴士宏_打工女皇吴士宏:从初中辍学的患癌小护士到微软中国总经理...
热门文章
- 计算机一级b考试理论知识,全国计算机等级考试一级b知识点
- linux空指针异常能捕获到吗,一次kernel panic分析--空指针in handle_IRQ_event
- n阶完全图边和顶点关系。_正N边型的完全图被分割成几个多边形
- 大学必须掌握的计算机技巧,大学生必须掌握的电脑办公技巧
- mfc打开控制台异常关闭_vc控制台程序关闭事件时的正确处理方式
- java readline 实现_基于自定义BufferedReader中的read和readLine方法
- 后门怎么写隐蔽java_用Java写黑软-后门篇
- 博士申请 | 香港科技大学谢知遥教授实验组招收机器学习全奖博士生
- ACM MM 2020视频目标检测挑战赛冠军DeepBlueAI团队技术分享
- 图神经网络时代的深度聚类