比较带点(.)版本号大小

早上在遗留的旧系统中看到原有作者在实现版本更新的服务中,直接通过比较两个字符串(一个客户端采集的版本信息,另一个从数据库获取最新版本号)是否相等来判断更新与否。这种做法存在的问题:如果因为配置错误的关系,下载的移动客户端版本号比数据库中版本号还新,那么就会提示下载,而且更严重的是即使下载安装完成后,如果应用是启动就会检查更新,将会出现重复提示更新的问题。

多种方法解决这个问题:(1)客户端和数据库都维护一个版本号和版本编码,版本号用于展示,而版本编码用于版本大小的比较,这个做法比较简单,比较数字大小即可。

(2)比较带点(.)版本号字符串的大小。这种做法比较直接,也是这篇文字的主题。抽取了代码实现分享给大家:

		int result = 0;
		byte[] b1 = "1.2".getBytes("utf-8");
		byte[] b2 = "1.2.6".getBytes("utf-8");
		
		if(b1.length >= b2.length){
			for(int i = 0,len = b2.length; i < len; i++){
				result |= Byte.valueOf(b1[i]).compareTo(Byte.valueOf(b2[i]));
			}
		}else if(b1.length < b2.length){
			for(int i = 0,len = b1.length; i < len; i++){
				result |= Byte.valueOf(b1[i]).compareTo(Byte.valueOf(b2[i]));
			}
			if(result == 0){//如果前两位都相等,长度长的较大
				result = -1;
			}
		}
		if(result >= 0){
			//>0表示配置错误,=0表示当前版本为最新
		}else{
			//说明需要更新
		}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值