做任何事都有两种人,一种是自己很努力去做的,还一种是听从他人意见建议做的。这里有我一些总结的经验,希望能帮到你们:
- 导入任何第三方包的时候都要再三思考,因为这个动作责任重大。
- 不要去绘制用户看不见的地方。
- 再三考虑数据库的使用对业务是不是必要的。
-
65535
问题很快就会遇到,这里可以助你渡劫。 - 替代异步任务最好的东西是
RxJava
,没有之一。 - Retrofit是目前最好的网络请求框架。
- 可以使用Retrolambda来简化你的代码。
- RxJava+Retrofit+Retrolambda组合起来使用简直不能更爽。
-
EventBus是个很好的消息总线库,我也用它,但是我不会过于依赖,因为大量使用这货会导致你的代码艰涩难懂,逻辑凌乱不堪,请慎用这货,包括
RxBus
。 - 分包按功能特点分,不要按业务层分。
- 主线程不要做耗时操作。
- 使用lint可以帮助你优化布局和布局层次,减少一些无必要的布局or控件。
- 如果你使用
Gradle
,那么尽可能去加速编译。 - 开启编译报告,看看编译过程中的耗时统计。
- 在架构上尽量采用大众化的。
- 测试是虽然费事费时,但是相比不要测试而言,你解决Bug的时候会更快,代码也更具健壮性。
- 使用依赖注入能让你的app更模块化更好测试。
- 订阅这个网站的内容对你大有裨益。
- 坚决不要使用个人邮箱作为应用商店平台的账户,当然也包括一些第三方服务提供商。
- 在使用
EditText
时,使用合适的输入类型。 - 使用
Android Studio -> Analyze
去分析和定位bug。 - 经常关注一些比较新的技术和库。例如dryrun这个库可以帮你减少构建远程仓库项目的时间。PS:我自己就在用,简直不能更爽。
-
Service
只做它应该做的,并且在需要它销毁的时候尽快能销毁。 - 使用AccountManager针对用户名和邮箱啥的提供建议。
- 使用
CI (Continuous Integration)
来构建和描述自己的beta版以及正式版apk。 - 不要运行自己的
CI
服务器,维护服务器很耗时,因为将有磁盘空间/安全问题/更新服务器以防止SSL攻击
等等各种柴犬二哈问题在等着你。使用circleci
,travis
或shippable
,它们便宜并且让你少操心。 - 发布app的时候可以使用自动部署。
- 你需要导入某个库,但是这个库特别大,而你只需要其中一小部分功能,那么你应该去找个更小的,更符合自己的库(proguard可以压缩资源)。
- 不要依赖导入过多的
modules
除非你真的需要。因为过多的modules
会导致构建变慢(CI就是个例子),这比起直接使用二进制的.jar/.aar
来说要慢4倍左右。 - 可以考虑将
.PNG
替换成.SVG
了。 - library中抽象类能比较便捷的控制和替换使用场景(例如:
AppLogger.d(“message”)
中包括了Log.d(TAG, message)
并且还能优化成Timber.d(message)
)。 - 监控网络连接和连接的类型你会发现->
wifi
连接下可能刷新数据更频繁。 - 监控电量和电池你会发现->充电时候数据可能更新更频繁,低电量的时候数据更新很慢。
- 用户交互界面就是个笑话,除非你能讲解出来,否则它绝对不够好。
- 测试非常适合于性能上的调优:慢慢地(但正确)写一些实现,然后验证优化并且也不会破坏测试。