Android 一些RxBinding使用场景

RxBinding的好处


  • 首先RxBinding是对Android View事件的扩展,它使得你可以对View事件使用RxJava的各种操作。
  • 提供了与RxJava一致的回调,使得代码简洁明了。尤其是页面中充斥着大量的监听事件,各种各样的匿名内部类时。
  • 几乎支持我们常用的所有控件及事件。(v4、v7、design、recyclerview等)另外每个库还有对应的Kotlin支持库。

RxBinding使用场景


RxBinding准备工作,添加相应的依赖(按需添加):

compile 'com.jakewharton.rxbinding:rxbinding:1.0.0'
compile 'com.jakewharton.rxbinding:rxbinding-support-v4:1.0.0'
compile 'com.jakewharton.rxbinding:rxbinding-appcompat-v7:1.0.0'
compile 'com.jakewharton.rxbinding:rxbinding-design:1.0.0'
compile 'com.jakewharton.rxbinding:rxbinding-recyclerview-v7:1.0.0'
compile 'com.jakewharton.rxbinding:rxbinding-leanback-v17:1.0.0'

1. 这个应该是最常用的方法了。

利用操作符throttleFirst取时间间隔内第一次点击事件。同样利用操作符throttleLast、debounce也可以实现。

2. 点击的多次监听

3. 获取验证码倒计时

这个场景大家应该不陌生。比如注册账号时,我们需要获取验证码用来验证手机号码,在等待验证码时,界面会有倒计时提示我们重新获取之类的。

4. 表单的验证

比如常见的登录页面,只有当用户名,密码输入格式正确了,才可以去点击登录按钮。这个利用操作符combineLatest就可以巧妙实现。

操作符combineLatest作用就是当多个Observables中的任何一个发射了一个数据时,通过一定的方法去组合多个Observables的最新数据,然后发射最终结果。
在本例中两个输入框只要内容发生变化,就会发送Observable然后我们在Fun2中利用我们的验证方法去判断输入框中最新的内容,最终返回是否可点击的结果。
这个例子我们也可以看到简洁之处。
我们使用RxTextView.textChanges(mEtPhone)就可以实现监听,而使用一般方法则像下面代码这样。(其实你可能只需要onTextChanged())

5. 总结

在上面的例子中,细心地你会发现,我会在onDestroy方法时手动的解除订阅,为的就是防止内存泄露,如果你觉得很麻烦的话,具体可以使用RxLifecycle:
https://github.com/trello/RxLifecycle
这里我就不过多的介绍了。
RxBinding的实现其实比较简单,大家有兴趣可以去阅读一些源码。当然使用场景还有很多,大家可以去举一反三,我就不一一去说了。

最后

在现在这个金三银四的面试季,我自己在网上也搜集了很多资料做成了文档和架构视频资料免费分享给大家【包括高级UI、性能优化、架构师课程、NDK、Kotlin、混合式开发(ReactNative+Weex)、Flutter等架构技术资料】,希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。

资料获取方式:加入Android架构交流QQ群聊:513088520 ,进群即领取资料!!!

点击链接加入群聊【Android移动架构总群】:加入群聊

资料大全

猜你喜欢

转载自blog.csdn.net/weixin_43351655/article/details/89320628