您的位置:首页 > 移动开发 > Android开发

创建Android应用程序-从艰难的方式中学习获得的的30条经验教训

2016-02-22 15:07 274 查看
本文转自翻译的文章:创建安卓app的30个经验教训 ,非常感谢作者分享的学习资源

翻译的原文来自:Building Android Apps — 30 things that experience made me learn the hard
way

下面翻译的内容可能和原作者翻译的内容有些出入,我通过查看原文,然后带着自己的见解翻译了些原文的内容,如果有什么不对的地方,还请多多包涵和指正,谢谢。

这世界上有两种人- 一种是以艰难的方式学习的人,一种是通过采取别人的建议来学习的人。下面有一些我一直从学习中获得的建议分享给你们:

1.在添加任何第三方库之前一定要再三考虑,因为这是一个很严重的事情;

2.如果绘制的视图是对用户不可见的,就不要绘制它

3.如果不是非要使用数据库,否则就不要使用它;

4.达到65k的方法计数标志会发生的很快,不过 multidexing 可以拯救你;

5.RxJavaAsyncTasks 和其它的最佳替代品;

6.Retrofit 可能是现在最佳的网络请求库;

7.使用 Retrolambda 来简化你的代码;

8.把 RxJava 与 Retrofit 和 Retrolambda 结合起来使用会让你酷炸天;

9.我使用 EventBus 而且它也很好,但是我不会用太多,因为这样代码库会变得凌乱;

10.建包应该通过功能来,而不是层次(Package by features,not layers.);

11.把所有东西都移到 application thread 以外;

12.lint可以帮助你优化布局和布局层次,这样你就能识别出那些可能是多余的view并把它们移除;

13.如果你正在使用gradle,使用一切可能的方式加速它;

14.对builds做分析报告,以便知道什么占据了编译时间;

15.使用众所周知的架构;

16.虽然测试需要时间,但是一旦你掌握了它的诀窍,比没有测试更快而且比编写的代码也更健壮

17.使用
依赖注入 让你的 app 更模块化,从而更容易测试;

18.收听 fragmented podcast 将会让你更加受益;

19.千万别用私人邮箱座位你安卓市场的发布者账号

20.总使用恰当的输入类型;

21.运用分析来找到使用模式和独立的 bugs ;

22.关注最新的
libraries(使用dryrun 来快速查看它们的效果);

23.当 Service 做完它该做的事情后,应该尽快的关闭它;

24.使用
Account Manager 来提示登录用户名和邮箱地址;

25.使用 CI (持续集成)来构建和发布你的 beta 和产品 apk;

26.不要运行自己的CI server,况且维护server是费时的事情,并且还要考虑磁盘空间/安全问题/更新server以防止SSL攻击等等原因。所以使用circleci,travis 或者shippable,他们便宜而且也可以少担心一些事情。
27.
Automate your deployments to the playstore;

28.如果一个library很大而你只需要使用其中的一部分功能,你应该寻找一个更小的来替代(比如依靠proguard的例子);

29.不要使用多余实际需要的modules。如果modules不是不断的被修改,考虑到它们从头开始编译的时间很重要(CI builds是一个很好的例子),或者检查上一个单独的modules是否最新,可能会花费比仅仅加载依赖.jar/.aar多出4倍以上的时间;

30.开始考虑用SVG来代替PNG(关于SVG的一篇介绍博客:/article/2431896.html);

31.Make library abstraction classes, it'll be way easier to switch to a new library if you only need to switch in one place(e.g.AppLogger.d("message") can contain Log.d(TAG,message) and later realise thatTimber.d(message)
is a better option);

32.监控你的连接情况以及连接类型(wifi之下更新更多的数据);

33.监控你的电源和电量(在充电的时候更新更多的数据,电量低的时候暂停更新)

34.一个用户界面就如一个笑话那样,如果你需要解释它,那么就证明它并不好;

35.测试对性能有很大的帮助:在写的时候慢慢的(但保证是正确的)实施,然后验证优化不要打破任何测试

If you have any questions drop me a tweet @cesarmcferreira!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: