Android Rx Android实战
上一次捣蛋 RxAndroid 是今年二月份的事情了,当时 RxAndroid 还处于一个资料甚少交流难的状态,当时还特意建了一个交流群,让搞这个的人可以加进来讨论讨论,毕竟这玩意还是挺有意思的,于是到今天群里已经有 124 人。
在这里我发现了一个现象,进入这个群的小伙伴很多都是中级工程师 or 以上的水准,没有像很多 XXXXXAndroid 交流群那样,小白和伸手党一大堆(在这里没有任何贬义看待,任何人都是从小白过来,只想说明一个现象)。嗯,是的,分层了,越是接触新颖的事物、并把事物专研进去的人才会有更大的几率发现并加入到这个组织。就像很多 HR,从古老的前程无忧到拉勾、周伯通、BOSS 直聘、100offer、github、甚至知乎等等新颖且聚集大量优秀工程师的地方招人一样,因为这些地方都聚集了热爱新潮和讨论的优秀人才。以后 HR 姐姐们也可以到各大框架的讨论区去挖人了 [笑哭]。
背景
将要重构的项目是本人的一个业余项目,由于上个公司工作太忙,导致进度缓慢,到现在功能点也还没完成多少个。趁着这几天失业,好好追追进度(工作还得要找,毕竟饭还是要吃~),顺便重构一下之前考虑不周到 or 不规范的地方,在这里 RxAndroid 充当一个辅助作用,并不是每一处地方都用上场,毕竟具体问题具体分析。
正题
RxAndroid + Retrofit
登陆功能重构之前 (只用 Retrofit 做请求):
1 |
public void onLogin(String phone, String psw) {
|
流程大概是这样的:账号密码请求服务器 —> 服务器返回用户资料(此处仅含 accessToken 和 refreshToken)—> 保存用户资料到本地(文件保存) —> 保存成功则登陆成功,保存失败则登陆失败。
可见,我要等 UserInfo.getInstance().save() 的返回来作出判断登陆成功与否,在这里,我放了在主线程去做,显然这样是会有性能问题。
办法 2:new Thread 去做这个保存,等待返回结果,然后再回到主 Thread 去更新 UI,大概是这样的:
1 |
private void saveUserInfo(final LoginResponse response){
|
这样就把卡顿主线程的问题解决了,但~~~ 有没更直观、简单的方法?
RxAndroid !!
1 |
public void onLogin(String phone, String psw) {
|
响应式编程,一条链式反应,有专门处理请求前、数据返回后处理、请求完成处理、异常等等的函数,还可以给它们特指专门的线程,思路清晰多了。
RxBinding
俺身边有一位朋友可能由于单身多年,手速达到惊人地步,年轻人嘛,急,按个按钮总喜欢连续猛按几下,而页面也连续弹出几个。。。
1 |
RxAdapterView.itemClickEvents(mListView) |
throttleFirst 能帮我们解决手速问题,如上。
注意,用了 RxBinding 之后,它就不仅仅是一个点击事件这么简单了,它成为了一个 Observable,然而我们可以用上它的各种特异功能 duang 的一声解决问题。
事件总线,RxBus
细心的小伙伴们可能已经发现我的代码有点奇怪,不太像是在用传统的开发模式下做操作。对,我是在自己构建的一个 MVC 架构上做的,由于还不很很成熟,就先不放出来讨论,例如模块间的耦合度还是挺大的,所以我想用 RxBus 当事件总线来解耦,这个考虑的东西比较多,先写到这里,未完待续。
推荐:
一张图解释RxJava中的线程控制
Android Rx Android实战的更多相关文章
- 《Android NFC 开发实战详解 》简介+源码+样章+勘误ING
<Android NFC 开发实战详解>简介+源码+样章+勘误ING SkySeraph Mar. 14th 2014 Email:skyseraph00@163.com 更多精彩请直接 ...
- Android ActionBar应用实战,高仿微信主界面的设计
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/26365683 经过前面两篇文章的学习,我想大家对ActionBar都已经有一个相对 ...
- Android 手势检测实战 打造支持缩放平移的图片预览效果(下)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39480503,本文出自:[张鸿洋的博客] 上一篇已经带大家实现了自由的放大缩小图 ...
- 《Android Studio开发实战 从零基础到App上线》资源下载和内容勘误
转载于:https://blog.csdn.net/aqi00/article/details/73065392 资源下载 下面是<Android Studio开发实战 从零基础到App上线&g ...
- 【Android开发VR实战】二.播放360°全景视频
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53924006 本文出自[DylanAndroid的博客] [Android开发 ...
- 【Android开发VR实战】三.开发一个寻宝类VR游戏TreasureHunt
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53939303 本文出自[DylanAndroid的博客] [Android开发 ...
- Android Animation动画实战(二):从屏幕底部弹出PopupWindow
在这篇文章之前,我已经陆陆续续写了几篇博客,介绍了Android Animation是如何使用的,有还不明白的,可以点击查看: 1. Android Animation动画详解(一): 补间动画 2. ...
- Android Animation动画实战(一): 从布局动画引入ListView滑动时,每一Item项的显示动画
前言: 之前,我已经写了两篇博文,给大家介绍了Android的基础动画是如何实现的,如果还不清楚的,可以点击查看:Android Animation动画详解(一): 补间动画 及 Android An ...
- 我把阿里、腾讯、字节跳动、美团等Android性能优化实战整合成了一个PDF文档
安卓开发大军浩浩荡荡,经过近十年的发展,Android技术优化日异月新,如今Android 11.0 已经发布,Android系统性能也已经非常流畅,可以在体验上完全媲美iOS. 但是,到了各大厂商手 ...
随机推荐
- JDK从1.8.x升级到9.0.1后Tomcat 8.0.x不能启动
目录 描述 具体环境情况 处理办法 描述 JDK在今年9月发布后,我们项目也打算测试升级使用JDK 9.在我将JDK升级成 JDK 9.0.1后,启动tomcat失败(黑框一闪就没了).具体失败信息如 ...
- 【转】Unity3D 关于贝赛尔曲线,平滑曲线,平滑路径,动态曲线
http://tieba.baidu.com/p/2460036481 很多时候我们需要的并不是直线和折线,而是平滑的曲线,比如寻路系统,某些物体的曲线运动,都需要平滑曲线来保证效果,今天试了一下,通 ...
- 201621123034 《Java程序设计》第13周学习总结
作业13-网络 1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 为你的系统增加网络功能(购物车.图书馆管理.斗地主等)-分组完成 为了让你的系统可以 ...
- 关于tap设备
$QEMU_PATH \ -nographic \ -drive file=./rootfs.ext4,format=raw \ -net nic,vlan=0 -net tap,vlan=0,ifn ...
- Axios & Interceptors & Serialization & CORS & cookie
Axios https://github.com/axios/axios#config-defaults Global axios defaults axios.defaults.baseURL = ...
- 洛谷 P3573 [POI2014]RAJ-Rally 解题报告
P3573 [POI2014]RAJ-Rally 题意: 给定一个\(N\)个点\(M\)条边的有向无环图,每条边长度都是\(1\). 请找到一个点,使得删掉这个点后剩余的图中的最长路径最短. 输入输 ...
- 交叉编译VIM并移植到ARM嵌入式Linux系统
原创作品,允许转载,转载时请务必以超链接形式标明文章.作者信息和本声明,否则将追究法律责任. 众所周知,vim是vi的增强版本,实际体验要比vi好用很多,由于笔者为ARM系统制作的基于busybo ...
- 【CZY选讲·Hja的棋盘】
题目描述 Hja特别有钱,他买了一个×的棋盘,然后Yjq到这个棋盘来搞事.一开始所有格子都是白的,Yjq进行次行操作次列操作,所谓一次操作,是将对应的行列上的所有格子颜色取反.现在Yjq希望搞事之后 ...
- 【 D3.js 进阶系列 — 4.0 】 绘制箭头
转自:http://www.ourd3js.com/wordpress/?p=660 [ D3.js 进阶系列 — 4.0 ] 绘制箭头 发表于2014/12/08 在 SVG 绘制区域中作图,在绘制 ...
- AGC007 - C Pushing Ball
Description 题目链接 懒得写详细题意了, 放个链接 \(n\le 2*10^5\) 个球, \(n+1\) 个坑, 排成数轴, 球坑交替. 相邻球-坑距离为等差数列 \(d\). 给定首项 ...