安卓开发最好的做法Android Development Best Practices

出自https://medium.freecodecamp.com/android-development-best-practices-83c94b027fd3#.8c6rnro74

让我们一起探索在设计和开发安卓app的一些最好的做法。
首先,当你开发一款安卓应用时,你应该准备好运行在一个多样的设备及环境中。
每一个安卓设备本身就是一个家庭。当一个家庭的成员失控时,也这意味其他的家庭成员也可能会受到影响。
你知道当某个应用需要内存时,如果没有空闲的内存,安卓是通过将关闭其他应用来提供内存吗?
当某个应用需要占用更多的内存,使用更多的CPU和GPU,或者消耗更多的电池,其他的每个应用将因此受影响。而且有可能破坏整个设备的用户体验。
性能问题。
这有一些其他的你应该遵循的好的做法当创建安卓项目的时候:

  • 使用推荐的安卓架构。好消息:Google已经开放一个例子演示他们推荐的架构的GitHub项目。
  • 经常维护代码质量:质量问题一堆。不仅与MVP/MVVM/MVC/等等有关,而且与在你的app的每一部分中的每一个代码块有关。
  • 总是包含单元测试。这是应用开发最重要的部分。我建议在JVM上运行单元测试,因为比运行在安卓设备本身或虚拟机上更快。如果你要求一些安卓依赖,用Robolectric。如果当测试的时候需要模拟对象,使用Mockito。
  • 总是包含功能UI测试。功能测试从用户的观点检验你的app的功能。如果你的应用不需要与其他应用交互,仅仅运行你的应用你可以使用https://developer.android.com/studio/test/index.html。如果和其他的应用有交互,使用https://developer.android.com/training/testing/ui-testing/uiautomator-testing.html测试它的功能。
  • 正如我先前所说,总是写更好的性能代码。
  • 在发布的版本中使用Proguard.这个将移除你的无用的代码,减少apk的大小。
  • 使用调试工具。我强烈建议使用Stetho.相信我,Stetho将是你最好的朋友。Stetho是由Facebook开发的对安卓应用来说是一个调试桥,集成Chrome桌面浏览器的开发者工具。通过Stetho,你可以很容易的观察你的应用-最值得注意的网络流量。它也允许你在app中容易地观察和编辑SQLite数据库和shared preferences。
  • 使用strings.xml.在长时间运行中添加文本作为字符串资源是一直有用的,特别是当支持需要添加的新语言时。
  • 为重复使用的UI元素创建独立的布局。在xml中使用include标签,另一个方便的标签是<merge/>标签。它作为一个伪父布局,有助于消除不必要的根ViewGroup.关于它查看https://developer.android.com/training/improving-layouts/reusing-layouts.html
  • 将启动图标放在mipmap文件夹中。当从不同的密度构建独立的apk时,drawable文件夹对于其他的密度被剥夺,使用高密度的启动图标在设备上将造成图标出现模糊,因为mipmap文件夹不被剥夺,对于包含的启动图标使用它总是最好的。
  • 尽可能地使用shapes和selectors代替images。这将进一步地减少apk的大小.
  • 避免深层次布局。深的视图层次使你的UI慢,更不要说更难管理的你的布局。深层次大多可以使用正确的的ViewGroup避免掉,是有那个ConstraintLayout(https://medium.com/@amitshekhar/using-constraint-layout-in-android-531e68019cd).
  • 使用HTTP库像Fase Android Networking(https://github.com/amitshekhariitbhu/Fast-Android-Networking),Volley或者Retrofit,根据你的用例。
  • 当在Intents或Bundles中解析数据时使用Parcelable类取代Serializable.实现Parcelable接口的序列化对象比使用java的默认序列化更快.实现Serializable接口的类被标记为可序列化,Java使用映射序列化。当使用Parcelable接口时整个对象不会自动序列化,相反地,你可以选择从对象中添加数据到使用之后反序列化对象的Parcel中。
  • 不在UI线程执行文件操作。文件操作应该在工作线程中执行,通常使用AsyncTask/Loader.它们花费时间,如果在UI线程执行可能使界面变得反应慢。在他们阻塞UI线程5秒的情况下,将会触发ANR警告并显示给用户。
  • 理解Bitmap.因为它占用巨额的内存,可以容易地导致OOM.用户喜欢内容!特别是当内容很好的格式化看起来好看的时候。例如,图片,是特别好的内容,主要是因为每张图片传达出一千个文字,它们也消耗大量的内存。大量的内存-学习(https://developer.android.com/training/displaying-bitmaps/index.html)
  • 在xml中使用styles避免重复的属性。
  • 当需要时使用Fragment.
  • 学习Activity的生命周期。
  • 通常,使用已证明的库代替自己的方案。
最后,再一次:坚持在不同的版本的操作系统上测试。
不要仅为一个设备开发,为所有的设备开发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值