一. 包结构规范
1. 基本包, 业务包, 测试包
包基础结构 :
-- base 包 : 应用中常用的公共包 和 类放在该包中, 例如 工具类, SQLiteOpenHelper, 配置类, Application, 各种类的基类 等;
-- business 包 : 应用中的实际业务包, 这个包存放 与 app 业务相关的具体实现的类 和 包;
-- test 包 : 用于存放单元测试 和 测试用例相关的包;
示例 :
2. 根据类型将 Java 类 分入不同包中
UI 相关 :
-- activity : 存放 Activity 相关的包;
-- fragment : 存放 Fragment 相关类;
-- widget : 存放自定义组件相关类;
适配器相关 :
-- adapter : 各种适配器, 尤其是 BaseAdapter 子类;
Java Bean相关 : 下面的两种包名经常存放 JavaBean 对象;
-- bean :
-- domain :
工具类相关 :
-- utils : 存放工具类;
监听器相关 :
-- listener : 存放各种监听器, 如按钮点击监听器等等;
数据库相关 :
-- sqlite : 存放数据库相关的包;
业务相关 :
-- engine : 存放业务逻辑相关类;
二. Application 代码规范
1. Application 单例规范
单例属性 : Application 本身就是单例模式, 在整个应用中, 只存在一个 Application 对象;
实现 Application 单例 :
-- 定义 Application 类型对象 : 在 自定义的 Application 中定义一个 Application 类型的函数;
private static QIApplication INSTANCE;
-- 定义共有构造方法 :
/** * 构造方法构造 Application */ public QIApplication() { INSTANCE = this; } -- 公共, 静态方法获取对象 : 在任何类中, 都可以调用该方法, 获取 Application 上下文对象; /** * 获取 Application 使用该函数可以在任意位置获取 Application 中的数据 * @return */ public static QIApplication getInstance() { return INSTANCE; }
2. Application 用于组件间数据传递 和 数据缓存
在 【Android 应用开发】 Application 使用分析 博客中有这方面的讲解;
Application 组件间数据传递 , Application 数据缓存;
3. Application 常用框架
代码示例 :
public class MyApplication extends Application { private static MyApplication INSTANCE; /** 用于数据传递的 Map 集合 */ private Map<String, Object> transferMap; /** 用于缓存数据的 Map 集合 */ private Map<String, Object> cacheMap; /** * 构造方法构造 Application */ private MyApplication() { INSTANCE = this; } /** * 获取 Application 使用该函数可以在任意位置获取 Application 中的数据 * @return */ public static MyApplication getInstance() { return INSTANCE; } @Override public void onCreate() { super.onCreate(); // 初始化用于数据传递的 Map 集合 transferMap = new HashMap<String, Object>(); // 初始化用于数据缓存的 Map 集合 cacheMap = new HashMap<String, Object>(); } /** * 获取数据传递 Map 集合 * @return * 数据传递 Map 集合 */ public Map<String, Object> getTransferMap() { return transferMap; } /** * 向 transferMap 集合中添加数据元素 */ public void putTransferMapElement(String key, Object object) { transferMap.put(key, object); } public Object getTransferMapElement(String key) { return transferMap.get(key); } /** * 向 transferMap 数据中移除对应的数据元素 */ public void removeTransferMapElement(String key) { transferMap.remove(key); } /** * 获取数据缓存 Map 集合 * @return * 数据缓存 Map 集合 */ public Map<String, Object> getCacheMap() { return cacheMap; } }