background image
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  的垃圾回收是不会回收这一部分内存的,所以如果不手动释放的话就
容易引起内存问题。