最近新接手的项目中出现了很多的bug,全部要重头实现,这个过程我也感慨良多,一个良好的代码书写习惯和严谨的逻辑思维习惯真的是一个程序员必备的
条件和因素,如果一个程序员自己的写的代码自己后期都看不懂,那么怎样才能保证项目的长期稳定的代码性呢?今天给大家分享的这个升级的逻辑就是经过
我的整理之后的,如果有不严谨的地方请大家多多批评斧正!
首先贴上一张我自己用xmind画的app冷升级的逻辑构图
好的,大家从上面的思维导图中也可以很清楚的看到我的升级逻辑思维,那么我们现在直接从代码逻辑中进行说明(相关的逻辑说明我已经添加了很详细的注释)
/**
* ===================================================
* 方法作者:wkzhao on 2017年3月6日16:01:34
* 方法描述: 访问更新的接口进行升级的逻辑方法
* 作者邮箱:wkzhao@iflytek.com
* ===================================================
*/
private void httpUpDate() {
JsonObject object = new JsonObject();
/**
* String.valueOf(CommUtils.getAppVersionCode(this))
* 将int类型的versioncode更改成string类型的versioncode
* 解决后台协调的参数类型不一致的问题 接口参数应该为int类
* 型 但是参数设置错误设置成string类型
*/
object.addProperty("currentVersionCode", String.valueOf(CommUtils.getAppVersionCode(this)));
object.addProperty("mobileType", "0");
object.addProperty("currentVersionName", CommUtils.getAppVersionName(this));
//开始网络请求 获得接口获得返回值
new HttpUtils().httpRequest(this, CFZXProperties.CHECKUPDATE_GETNEWVERSION, object, new HttpInterface() {
//请求网络接口成功的回调
@Override
public void success(ResponseData response) {
if (response.getStatus().equals("0")) {
return;
}
BaseResp baseUpDateResp = JsonUtil.fromJson(response.getResult(), BaseResp.class);
if (baseUpDateResp == null) {
return;
}
//对请求结果进行判断 根据结果决定是否更新
if (baseUpDateResp.isFlag()){
//json解析获取到的数据
final CheckUpDate checkUpDate = JsonUtil.fromJson(baseUpDateResp.getData().toString(), CheckUpDate.class);
/**
* VersionCode:程序员使用的版本号为int类型的数值 在本项目中进行比较所采用的基准值
* VersionName:用户显示采用的版本号为String类型的数值 在本项目中是用来进行显示的基准值
* 获取线上版本号VersionCode
*/
int netVersionCode = checkUpDate.getVersionCode();
Log.e("netVersionCode","线上版本号是:" + netVersionCode);
//获取本地版本号
int localVersionCode = CommUtils.getVersionCode(HomeActivity.this);
Log.e("localVersionCode","本地版本号是:"