返回 登录
0

22个Android开发建议

本文主要用来收集Android开发中积累的一些宝贵经验,这些经验中有一些约定熟成且经过检验的建议,有一些结合最新技术的实践。无论是菜鸟还是大神,都应该学会阅读别人的经验,并结合自己的思考转化成对自己有用的知识,这才是最快的成长之路。另外,对于这些建议,我会尽量翔实的进行说明以确保能够顺利快速应用到实际开发中。
1. 第三方库 在你添加每一个third party library之前,请认真考虑是否真的需要这个library。
3. 数据库 除非不得不,否则不要使用database
5.0太大的问题进行了分析,有空时我再翻译下给各位。虽然Play Services 6.5已经模块化,更加轻量级了)。 现在,既然我们已经知道了自家app里的method数了,那么如何来处理这种情况呢? Multidex,官方提供的解决方案,这篇文章里有详细的使用方法,此不赘述。 ProGuard ProGuard可以把code里unnecessary的method移除,压缩apk,当然还有代码混淆的奇效。 再创建一个DEX File。把app里可以独立的模块或code提取出来,放到一个独立的dex文件里,你可以使用Custom ClassLoader来加载这些类,然后使用接口或反射来调用这些方法。不过,这个过程还是比较麻烦的。
5. RxJava+RxAndroid+Retrolambda 使用前可以通过这篇gist来了解RxJava, RxAndroid & Retrolambda的结合用法。这个组合可以优雅的在不同线程中处理事务,同时能够方便的实现数据流动和及时响应,而且Retrolambda能够精简你的code。其中,核心的两个概念是Observables和Subscribers,前者对外提供数据,后者监听并消费这些数据。 另外,这里有一个看起来不错的项目Learning RxJava for Android by example,等空闲时再去阅读下code。 6. Retrofit + RxJava 利用Retrofit与RxJava结合,为你的app提供网络请求服务。 你可以参考这个超赞的例子,让你快速感受二者结合使用方法。
9. 架构:使用clean Architecture 这里有两篇优质文章:Architecting Android…The clean way?和Architecting Android…The evolution 分别介绍并用code实现了一个Clean架构。后面我也会专门分析下这种架构,因为对于任何一个project而言,最初的好的架构是非常重要的!所以,如果你想提高自己,那么架构这一关是必经之路。
11. 使用依赖注入神器Dagger 如果你不知道什么是依赖注入,你可以先读一下这篇文章Dependency injection on Android: Dagger (Part 1),或者这篇依赖注入。简单来说,依赖注入替代了传统创建对象的new操作,当需要创建一个class的实例时,使用依赖注入从外部直接获取一个实例,具体这个实例是如何创建的不需要关心,由一个对象库统一管理每个对象的创建过程,并直接对外提供对象。这样做的好处是我们不用管实例是怎么创建的,这种抽象可以使得每个对象的创建过程变得可扩展性,只要在对象库里修改一次,那么所有用到这个实例的地方都随之变更。例如在测试时,我们希望某个mock某个对象的数据,就可以修改注入的对象。 依赖注入有不少工具,不过Dagger2使用的是编译时代码生成(code generation)方式而不是反射(reflection),所以它的性能比较出众。这篇文章有对Dagger2的实践和分析。
13. 关注新的开源library 你可以通过Android Arsenal来保持对开源项目的关注,同时利用这个工具dryrun来快速将开源项目跑在genymotion以看到实际效果。
14. Service 如果你创建了Service,那么一旦这个Service完成了自己的使命,就应该立即清理掉它
16. 使用持续集成CI(Continuous Integration)来编译并发布你的beta和release build 持续集成可以帮助你方便的编译并发布项目,不过,不要去搭建你们自己的CI服务器,因为你需要花费太多的时间来处理硬盘空间、安全问题和预防SSL攻击等问题。你可以尝试Jenkins、circleci、 travis 或者 shippable,这些价格并不贵,而且能帮你省很多事情。
18. 开始考虑用svg替代png 理由很简单,android developer应该很熟悉每次导入一张图片时都需要生成四五种不同大小的png图片并放入到对应文件夹。与其维护这么多图片,显然使用一张svg图片更加方便。而且,google也在不断提供相关的支持,除了基本的Vector Drawable,从最新的Support Library我们也能看到google也在鼓励developer们使用svg。 不过,svg也有自己的限制,比如它比较适合小icon,因为它最终会生成bitmap加载以供显示,所以这需要一定的cpu支持。当然总体来讲svg还是更优的,至少大家可以不用再维护四五张不同尺寸的图片了。
21. User Interface is like a joke.If you have to explain it, it’s not that good.
22. 22. 先写slow但是right的代码,再去进行优化
链接内容

评论