天天看点

Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!

算下来,tomcat服务器已经写了很长一段时间了,一直说拿他来搞点事 情,也一直没做,今天刚好有空,交流群还有人请教,就寻思着把一些相关性的原理和基础操作写下来,虽然我网络这一块还是不怎么扎实,嘿嘿,还记得我们怎么搭建的服务器吗? 我们新建一个项目tomcatversion 这边先来说一下原理,我们做的小例子也是十分的简单,一个首页,我们用handler实现,然后同步检测当前版本号和系统的版本号对比,如果有升级则弹出提示框提示升级,点击确定开始下载apk,同时显示进度,等下载完成之后启动新下载的apk进行安装,如果点击取消,进入主页,如果没有升级,则直接进入主页,思路应该很清晰吧!那好,我们开始!

1.搭建tomcat服务器

2.新建一个indexactivity类,并且在androidmanifest.xml里注册并且设置为主入口

3.准备一张首页的图片

可有可无,这里作为演示就去网上下载了一张

4.版本更新接口

也就是服务器的地址,我们这里也就直接自己写一段简单的json了
我们把他放在服务器里面】
Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!
乱码请无视,浏览器的锅

5.网络权限

布局就没什么内容了,一个进度,一个文本
首先你的首页的文本上需要获取当前应用的版本号吧
我们打印出来的log
Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!
我们需要的就是这个name(版本名称)
这段json还是十分的简单的,我们直接就用原生的方式解析了,本来想用volley的,但是演示的话,希望各位自己根据需求使用
这里我们写了一个utils来转换流
这样我们就可以把json打印出来了
Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!
既然获取到了,那我们就开始解析json吧 在log后面继续写代码
这样我们就解析完成了
这里我们可以根据name或者code的比较来判断是否有更新,有更新的话,弹出提示框,点确定再更新,我这里就比较code了,先写以恶搞获取code的方法
然后我们接着刚才解析完json的地方比对,我们先把服务器的json数据改了
这样就会提示更新了,我们检修
子线程中我们是不能弹框的,所以我们用handler,当我们发送update_yes的时候就弹框,也就是执行我们弹框的方法
这里我用了一个自定义的dialog’
他需要用到一些资源
接着我们再执行一下
Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!
我们现在再来处理一下没有更新的逻辑,没有更新的话直接跳主页面,我们写一个方法
但是这样还是有个问题,他没有更新一下子就跳过去了,所以我们在发消息的时候先让线程睡一会儿
但是这里又出现了一个新的问题,毕竟是网络问题,他是耗时的,这样的话,万一等太久了用户体验也上不去啊,所以我们这里要做一个优化 我们在开始网络请求的时间记录一个时间
然后再网络请求结束的时候去计算时间并且计算一共用了多少时间
涉及到下载,这里你可以使用很多的开源框架,我这里使用的是xutils 我们下载之后拷贝在libs里就可以用了,用起来也很简单,使用之前先加个权限
然后开始下载
这里的代码逻辑也是十分的简单的,多吧,我们来看一下效果‘
Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!
更新的包体积有点小,所以一下子就百分之百了,我们去sd卡更目录看一下
Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!
确定是下载完成了,但是下完完之后啥也没发生啊,这就要我们再次优化了
下载完之后自动进入安装界面,这才是真正的体验,我们在onsuccess()方法中
我们来看看效果
Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!
大致的一个逻辑思路就是这样了