程序的架构(模式)设计
程序使用MVP模式进行开发。
包设计
公共子包
包名 | 描述 |
---|
impl | 放接口实现类 |
model | 放模型(JavaBean)类 |
util | 放工具类 |
exception | 放异常类 |
包说明
包名 | 描述 |
---|
com.ircloud.core | 核心包,该包的内容可以无缝迁移到别的工程,与业务无关 |
com.ircloud.core.cache | 缓存包,放缓存相关的代码 |
com.ircloud.core.json | json包,放json处理相关的代码 |
com.ircloud.core.log | 日志包,放log处理相关的代码 |
com.ircloud.dashboard | 易看板的根包,放易看板业务相关的代码 |
com.ircloud.dashboard.api | 放api代码 |
com.ircloud.dashboard.presenter | 放业务逻辑处理代码 |
com.ircloud.dashboard.view | 放视图代码 |
com.ircloud.dashboard.view.activity | 放Activity类 |
com.ircloud.dashboard.view.dialog | 放Dialog类 |
类设计
类说明
类名 | 描述 |
---|
com.ircloud.dashboard.AppContext | 应用上下文类 |
com.ircloud.dashboard.Constants | 应用公共常量类,包括Bugly的appId,日志标签,缓存的Key,清单文件的Meta key(前缀是MK_),时间常量等常量 |
数据库设计
暂无
Api设计
- api每一个接口都对应一个接口编码,编码均存放在ApiCode类
- 调用api出现的异常均抛出ApiException
- 外部调用api,只需要使用Api类和ApiFactory类
- api使用Retrofit库进行开发
Json处理设计
- 外部调用json处理使用com.ircloud.core.json.JsonUtils工具类
- Retrofit使用的json处理使用com.ircloud.core.json.ObjectMapperFactory工厂类
json字符串转java对象
GeoModel[] geoModels = JsonUtils.fromJson(geoJson, GeoModel[].class)
java对象转json字符串
String json = JsonUtils.toJson(data);
图片库设计
暂无
内存缓存设计
- 外部调用内存缓存,只需要使用ICache类和CacheFactory类
- 缓存的对象必须可序列化,即是实现Serializable接口
- 缓存可以设置创建时间和过期时间,以此判断缓存是否失效
- 缓存的key值存放在Constants类,前缀是CK_,如CK_USER_NAME
缓存数据
memoryCache.put("currentUser", currentUser)
缓存数据,数据5分钟后失效
memoryCache.put("currentUser", currentUser, new Date(), 5*60*1000);
获取缓存的数据
UserSo currentUser = memoryCache.get("currentUser", UserSo.class);
删除缓存的数据
memoryCache.del("currentUser");
视图设计
- BaseRxCordovaActivity是CordovaActivity与RxAndroid集成的基类
- activity布局文件的命名为activity_xxx
- dialog布局文件的命名为dialog_xxx
例子
DashboardActivity对应的布局文件是activity_dashboard.xml
TrendDialog对应的布局文件是dialog_trend.xml
屏幕适配设计
机型 | 屏幕分辨率 | 1dp/1sp的像素值 | 对应的values文件夹 |
---|
乐视手机乐2 | 1920x1080 | 3px | values-xxhdpi-1920x1080 |
乐视电视X50 | 1920x1080 | 2px | values-xhdpi-1920x1080 |
日志设计
- 外部调用内存缓存,只需要使用com.ircloud.core.log.Logger接口和com.ircloud.core.log.LoggerFactory类
获取日志接口
private static Logger logger = LoggerFactory.getLogger();
打印日志
logger.debug("Getting online user data is completed.");
外部库设计
- 时间库使用net.danlew:android.joda,能够更方便对时间进行操作
外部接口(第三方平台)设计
- 程序更新功能使用Bugly
- 崩溃日志收集功能使用Bugly
版本渠道设计