创建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.RxJava 是 AsyncTasks 和其它的最佳替代品;
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!
翻译的原文来自:Building Android Apps — 30 things that experience made me learn the hard
way
下面翻译的内容可能和原作者翻译的内容有些出入,我通过查看原文,然后带着自己的见解翻译了些原文的内容,如果有什么不对的地方,还请多多包涵和指正,谢谢。
这世界上有两种人- 一种是以艰难的方式学习的人,一种是通过采取别人的建议来学习的人。下面有一些我一直从学习中获得的建议分享给你们:
1.在添加任何第三方库之前一定要再三考虑,因为这是一个很严重的事情;
2.如果绘制的视图是对用户不可见的,就不要绘制它;
3.如果不是非要使用数据库,否则就不要使用它;
4.达到65k的方法计数标志会发生的很快,不过 multidexing 可以拯救你;
5.RxJava 是 AsyncTasks 和其它的最佳替代品;
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!
相关文章推荐
- 在为应用集成微博第三方登录获取用户信息的时候出现异常com.weibo.sdk.android.WeiboException: {"error":"User does not exists!","er
- 一个帖子学会Android开发四大组件
- DecorView
- Android上传文件到服务器
- Java For Android常用知识总结1
- 简单掌握Android开发中彩信的发送接收及其附件的处理
- Android:Activity+Fragment及它们之间的数据交换(一)
- Android存储子系统
- 解决 The same input jar is specified twice 问题
- 详解Android全局异常的捕获处理
- Android 打造炫目的圆形菜单 秒秒钟高仿建行圆形菜单
- 不容错过!开发者必备的十二大Android开发资源
- Android 入门文档_Android 4.0后JNI所做的更改
- Android开发错误汇总
- Android开发中使用mms模块收发单卡和双卡短信的教程
- Android典型界面设计(8) ——ViewPager+PagerSlidingTabStrip实现双导航
- Git服务器的搭建, 以及Android studio 上克隆git 服务器上的项目
- Android-Universal-Image-Loader 的使用说明
- Android KitKat 外部存储权限分析
- ANDROID_MARS学习笔记_S04_009_用java.lang.ref.SoftReference作缓存,android.os.Handler和new Thread异步加载略图片