1.6 Android开发
Android开发秘籍(第2版)
本书着眼于Android开发的最主要方面:编写Android代码。然而,略谈一谈开发的其他方面,如设计和发布,也是适宜的。
1.6.1 良好的应用设计
一个出色的应用程序应具备三个要素:好想法、好代码、好设计。通常,最后一点最不为人们所重视,因为多数开发者独立工作,且自身并不具备图形设计人员的素质。Google应该已经意识到了这一点,因此创建了一套设计指南,包括图标设计、窗口微件设计、Activity和任务设计,以及菜单设计等。这些可以在http://developer.android.com/guide/practices/ui_guidelines/中找到。Google还做了更进一步的工作,创建了一个专门演示设计原则及其在Android应用上的实现方法的网站,网址为http://developer.android.com/design/index.html。
良好的设计无论怎样强调都不过分。它可以让应用显得与众不同,提高用户的接受度,并让用户赞不绝口。市场上许多最为成功的应用都是开发者与图形设计者通力合作的产物。应把应用开发时间的相当一部分投入到考虑它的最佳设计方案上来。
1.6.2 保持向前兼容1
新的Android版本通常在API层面上是逐渐增强且向前兼容的。事实上,一个设备,只有当其通过Android API的兼容性测试后,才能被称为Android设备。然而,如果一个应用对底层系统进行了改动,就无法确保兼容性。为确保未来的Android更新被安装到设备上时,应用程序能够向前兼容,Google提出了以下规则。
不要使用内部的或不被支持的API。
不要未经询问用户就直接修改设置。未来的系统版本可能会出于安全考虑对设置操作加以限制。例如,应用曾经可以自行打开GPS或数据漫游开关,但如今已经不被允许了。
不要在布局上做得太过火。虽然不常见,但太复杂的布局(层数超过10或总数超过30)的确可能导致程序崩溃。
不要对硬件做不恰当的假定。不是所有的Android设备都包含全套可能支持的硬件。应确保对所需硬件进行检查,并在硬件不存在时处理相应的例外。
确保设备方向变化不会干扰应用程序运行,或者引发不可预测的行为。屏幕方向是可以锁定的,这在第2章中会提到。
注意Android并不保证向后兼容,因此最好如第2章中将要提到的那样,声明应用所支持的最低SDK版本,这样设备可以载入适当的兼容性设定。如何在旧程序上使用其他新特性这一问题,在本书中将会多次提及。
1.6.3 确保健壮性
与兼容性同等重要,在应用程序设计和测试中还应考虑健壮性(robustness)。下面给出确保健壮性的几条建议:
优先使用Android库而非Java库。Android库专为嵌入式设备而设计,并且覆盖了应用程序的多种需求。在某些情况下,如使用第三方插件或应用程序框架时,可能要用到Java库。但在二者均可用的情况下,用Android库更佳。
注意内存分配。要对变量进行初始化。尽量对对象进行重用而不是再分配,这会提升应用程序运行速度并避免对垃圾收集(garbage collection)机制的过度使用。可以用Dalvik调试监视服务器(DDMS)工具对内存分配进行跟踪,这会在第16章中详述。
使用LogCat工具,并检查由其产生的警告或错误。这同样将在第16章中探讨。
调试要彻底,尽量涵盖不同的环境和设备。
1向前兼容(forward compatibility),在应用程序自身层面,可以理解为使应用程序较新版本产生的输出能被较早的版本所兼容(可能需要通过忽略早期版本中未实现的功能来达到此目的);而在应用程序与它所基于的操作系统的关系层面,则可理解为应用程序可以在未来发布的更新版系统上顺利运行。它与向后兼容(backward compatility)是一对截然相反的概念。后者在应用程序自身层面,意为应用程序的较新版本能够接受较早版本产生的结果;在应用程序与系统关系层面,则意味应用程序可以运行在任何操作系统的早期版本之上。具体到本节上下文,这里的向前兼容意为Android应用应能适应未来发布的Android系统更新。概念易混,特此辨析。——译者注