导入任何第三方包的时候都要再三思考,因为这个动作责任重大。
导入任何第三方包的时候都要再三思考,因为这个动作责任重大。
不要去绘制用户看不见的地方。
再三考虑数据库的使用对业务是不是必要的。
替代异步任务最好的东西是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连接下可能刷新数据更频繁。
监控电量和电池你会发现->充电时候数据可能更新更频繁,低电量的时候数据更新很慢。
用户交互界面就是个笑话,除非你能讲解出来,否则它绝对不够好。
测试非常适合于性能上的调优:慢慢地(但正确)写一些实现,然后验证优化并且也不会破坏测试。