Android项目设计规范
本文档为Android项目设计规范,编写初衷
- 清晰结构增强项目可阅读性
- 方便项目的日常维护
- 提高新需求的研发效率
1. 项目结构规范
- 模块包组织:同一模块,同一类功能建立共性名,示例:
- Home: home页面
- logic/model: 处理逻辑业务处理
http:处理网络请求
entity: 处理数据实体- view:处理视图
ui:存入本模块下的自定义ui- constants:本模块常量宏
- utils:本模块的工具类
2. 工具类封装与使用(未完待补充)
- 项目全局使用到的工具类,统一封装,禁止将工具类的可以实现的逻辑分散到项目的各个模块中
- 使用单例或者静态方法封装接口,示例:
- 日志工具类:LogUtils
1.负责收集项目中的日志,提供开关日志接口
2.提供日志等级打印接口,提供过滤日志tag- 文案提示工具类:ToastUtils
文字统一提示工具类,提供直接显示方案与显示配置文件中的文字2个接口。- 文件管理类:FileUtils
1.提供文件的相关管理接口。- 屏幕管理类:ScreenUtils
1.管理屏幕属性,提供获取屏幕宽高的接口。
2.提供物理像素与相对象像素相互转换接口- 状态栏工具类:StatusBarUtils
1.提供状态属性设置接口。- 页面跳转管理类:PageSwitchUtils
1.页面统一跳转,提供普通跳转与带result的跳转接口。
3.模块化设计原则
- 公共代码模块化,使用依赖的方式引入到项目中,不依赖于具体的业务逻辑,使用接口或者协议的方式给使用者
- 对于一些公共组件,封装时切忌把具体的业务逻辑也封装进去,应做到具体业务逻辑的实现丢给使用者,如统一打点sdk。
4.字符串使用原则(方便今后的国际化)
- 使用配置文件进行声明,如无特殊需求,项目中仅使用values(strings.xml)与values-zh-rCN(strings.xml)
5.h5与原生分割原则
- 使用插件进行交互,其中交互接口均提供失败与成功接口。
- 对于一些生业务逻辑且数据量在页面,如:页面中存在列表,且交互方式复杂可采用native端做。
- 对于一些页面更换比较频繁,如活动页面,建议采用url方面展示,目前是使用h5页面。
- 对于一些页面更换频率少,如用户中心,设置页面可采用native,减少app包。
- 交互的数据结构形式如下:
[
Code:1 请求状态码
msg:请求提示方案
Result:[]
]
6.项目中资源文件使用原则
- 图片资源:
- 图片资源在使用之前需要进行一次无损压缩操作,可使用tinypng.com进行压缩。
- 对于一些圆角边框或是纯色背景禁止使用图片应使用xml文件代替。
- 图片资源的命名参考编码规范
- 布局文件使用原则
- 命名规范参考编码规范
- 同一样式,应定义共性的style文件,禁止分散到各个布局文件中。
- 布局文件应当模块化,对于共同的视图xml统一封装,使用include引入,减少xml文档的嵌套层级与结点数提高渲染效率。
7.对象使用原则
- 自定义控件应当提供完整的生命周期管理(创建,运行,恢复,销毁)至少提供创建与资源回收接口,防止内存泄露。
- 使用定时器时,禁止嵌套循环,在定时完成时需要释放定时器资源。
- while循环禁止使用类似的条件
while(true){
do something…
}
应使用开关条件,并提供开/关接口,如下:
while(isRun){
do something….
}- 动画资源使用:动画使用完毕之后提供释放资源接口。
- 多线程使用:
- 同一类逻辑多次使用建议使用线程池。
- 扩展于Thread的线程对象,禁止使用stop停止本线程,禁止使用while(true)处理业务逻辑,并提供回收本线程资源的接口。