21、styles.xml:将 layout 中不断重现的 style 提炼出通用的 style 通用组件,放到 styles.xml
中。
22、如果多个 Activity 中包含共同的 UI 处理,那么可以提炼一个 CommonActivity,把通用部
分叫由它来处理,其他 activity 只要继承它即可。
23、使用 button+activitgroup 实现 tab 效果时,使用 Button.setSelected(true),确保按钮处于
选择状态,并使 activitygroup 的当前 activity 与该 button 对应。
24、如果所开发的为通用组件,为避免冲突,将 drawable/layout/menu/values 目录下的文件
名增加前缀。
25、数据一定要效验,例如:
字符型转数字型,如果转换失败一定要有缺省值;
服务端响应数据是否有效判断。
26、版本控制。就算是自己一个人写代码,版本控制也是有必要的,Git 也好,SVN 也好,
都是有帮助的。版本控制一方面是对自己代码的一个备份,另一方面,如果想回返回历史版
本也是极有帮助的,所以最好能够熟悉一下 Git 或者 SVN 的使用。
27、制作名词表。Android 是围绕四大组件特别是 Activity 和 Service 进行开发的,但是如
果项目庞大,有多个 Activity 存在,那么记住每一个 Activity 的类名是很难得,但是记住每
一个 Activity 的功能却相对容易。这时名词表派上用场了,记录每一个模块、组件、甚至是
每一个 Activity 的官方统一名称(比如,功能是作品列表的 Activity,名称就叫作品列表页,
对应的类是 WorksListActivity),在沟通过程中,大家(包括测试人员等项目相关人员)统一
说“作品列表页”。当时的初衷是解决测试团队的 Bug 描述过于模糊(如果有多个列表页,
测试人员往往会写“列表页 XXX 问题”)。
28、内存管理。Android 虽然延续了 Java 的垃圾回收机制,但是并不意味 Android 应用程
序 就 不 会 出 现 内 存 问 题。 在 Android 中引起内存开销过大的往往是 BitMap 对象。
BitMap.java 实际上是 Skia 引擎中对图片处理部分的 Java 层代码而已(真正工作的是 C++
层代码,通过 JNI 封装,最后提供 Java 层的接口),那么你创建 BitMap 对象实际上是创
建了两部分内存,一部分是 Java 层的,就是 BitMap 对象,Java 的垃圾回收会在合适的时
机回收这一部分内存。另一部分是 C++层面的,也就是通过 JNI 调用 C++层的代码分配的
那一部分内存。Java 的垃圾回收是不会回收这一部分内存的,所以如果不手动释放的话就
容易引起内存问题。