rxlint: 检查RxJava代码的Android lint规则
2016-04-05 12:12
393 查看
原文链接:http://www.littlerobots.nl/blog/RxLint-a-lint-rule-for-RxJava/
在项目中使用RxJava可以带来很多好处,但学习rx却是个不小的挑战。而且在学习中,很容易出错:)
经常遇到的问题是不处理onError()。考虑下面的代码片段:
看起来很简单;订阅一个可观察者,只获取第一个元素,但这里有一个问题。如果可观察者不释放任何元素(它结束了),first()操作符将抛出NoSuchElementException异常。
因为没有处理onError()通知,上面代码片段运行时将会抛出一个异常并导致崩溃。后台线程发生崩溃时,不可能指出是哪里导致的问题。这会发生么?我不知道,但这个问题可能依赖于注册的观察者。
即使你确实知道first()操作符会抛出异常,也很容易忘记处理错误情况。这就是需要rxlint的原因。
![](http://www.littlerobots.nl/downloads/posts/rxlint.png)
注意一下事项:
rxlint只用在Android代码。如果有单独的Java模块,可以在Android Studio中运行lint检测,但是这个整合并不完美。
当你使用retry()或者onErrorXXX操作符时,rxlint会对不抛出任何错误的可观测者提示。和其他lint检测一样,你可以忽略这个lint错误。
即使rxlint依赖指定在compile范围,它不会给你的工程增加任何代码。
rxlint是基于Apache证书的开源项目。请到项目网址查看更多信息,并添加到项目中来杀死这些错误!
在项目中使用RxJava可以带来很多好处,但学习rx却是个不小的挑战。而且在学习中,很容易出错:)
经常遇到的问题是不处理onError()。考虑下面的代码片段:
Observable<String> observable = getObservable(); // Get the first item from this observable Subscription subscription = observable.first().subscribe(s -> { ... });
看起来很简单;订阅一个可观察者,只获取第一个元素,但这里有一个问题。如果可观察者不释放任何元素(它结束了),first()操作符将抛出NoSuchElementException异常。
因为没有处理onError()通知,上面代码片段运行时将会抛出一个异常并导致崩溃。后台线程发生崩溃时,不可能指出是哪里导致的问题。这会发生么?我不知道,但这个问题可能依赖于注册的观察者。
即使你确实知道first()操作符会抛出异常,也很容易忘记处理错误情况。这就是需要rxlint的原因。
rxlint检查
rxlint目前只有一条检测订阅是否处理onError()的lint规则。工程增加rxlint很简单。只需要在gradle文件中增加compile ‘nl.littlerobots.rxlint:rxlint:1.0’依赖,Android Studio就会提示你忘记处理onError的。![](http://www.littlerobots.nl/downloads/posts/rxlint.png)
注意一下事项:
rxlint只用在Android代码。如果有单独的Java模块,可以在Android Studio中运行lint检测,但是这个整合并不完美。
当你使用retry()或者onErrorXXX操作符时,rxlint会对不抛出任何错误的可观测者提示。和其他lint检测一样,你可以忽略这个lint错误。
即使rxlint依赖指定在compile范围,它不会给你的工程增加任何代码。
rxlint是基于Apache证书的开源项目。请到项目网址查看更多信息,并添加到项目中来杀死这些错误!
相关文章推荐
- Android-ViewPager的使用
- Android 自定义对话框dialog
- 一个demo让你彻底理解Android中触摸事件的分发
- Android图片三级缓存策略(网络、本地、内存缓存)
- 添加更改文件后重新编译androidstudio
- Android中导航页制作
- Android 常用 adb 命令总结
- Android判断App前台运行还是后台运行(运行状态)
- 告别编译运行 ---- Android Studio 2.0 Preview发布Instant Run功能
- android编译错误之Duplicate file
- Android Studio 使用笔记
- Android 十分方便的EasyRecyclerView
- Android动画(实现抛物线运动)
- Android四种启动模式
- Android自定义实现循环滚轮控件WheelView
- android 弹性scollview 多功能
- Android Glide 下载监听
- Android分包MultiDex原理详解
- android LayoutInflater.inflate()的参数及其用法
- android WindowManager可拖动悬浮按钮