Android中的app升级逻辑(非热更新)

本文介绍了Android应用的冷更新逻辑,强调了良好代码习惯和逻辑思维的重要性。作者分享了自己整理的升级流程,并附带了详细的思维导图和代码注释。
摘要由CSDN通过智能技术生成

最近新接手的项目中出现了很多的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","本地版本号是:" 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值