March 5th, 2017
Android Weekly Issue #248.
本期内容包括: 为什么有时候应该让你的应用崩溃(而不是一味保护); Trello离线模式实现中两个id的问题; 如何让Dagger的component按照scope保存, 在屏幕旋转时不重建; 用Dagger构建Realm的数据库迁移逻辑;
利用各种mock工具写单元测试; Map上markers的动画实现; JUnit5中@DisplayName的使用; RxJava中的Single和Completable使用; 举例说明如何给FindBugs写自定义的探测器; Android中静态代码分析工具的使用; Trello离线实现中sync失败情况的处理.
ARTICLES & TUTORIALS
Why your app should crash
作者认为有时候让应用崩溃反而是有好处的.
以NPE为例, 有时候我们会习惯性地加很多null判断, 有的是多余的, 有的防御型的代码反而会掩盖了真实问题所在. 比如当一个不合理的情况发生时, 让用户看到一个不可理解的页面, 比如空白, 然后我们开发者根本不知道这种情况的发生.
与其这样掩盖错误, 不如让应用崩溃, 让开发者立即知道问题的原因.
实用建议:
永远让应用对外来输入(比如service的响应, UI的输入, 进来的intents)保持健壮性.
在程序的入口点保证数据的完整性. 这样不合理的数据就不会到处都是, 所以你不用到处检查.
如果你不确定某个错误是否会在某个地方发生, 先假装它不会发生, 在测试阶段再验证.
如果某个方法在产品环境不能被调用, 或者只能被调用一次等, 抛出
IllegalStateExce