使用Java代码来比较Android客户端版本号
作者:低调小一 时间:2021-09-07 17:44:22
关键点
为什么不能使用String.compareTo方法来比较客户端版本号?
举个例子,之前客户端版本号为:9.9.9,而服务器端最新的客户端版本号为:10.0.1,虽然10.0.1明显高于9.9.9,但是按照compareTo方法,这个9.9.9是大于10.0.1的,导致客户端版本号比较错误。
Java代码实现
扯了一些,最后还是要show一下代码的,以下是我的客户端版本号比较代码,欢迎吐槽。
public static int compareVersion(String version1, String version2) {
if (version1.equals(version2)) {
return 0;
}
String[] version1Array = version1.split("\\.");
String[] version2Array = version2.split("\\.");
int index = 0;
int minLen = Math.min(version1Array.length, version2Array.length);
int diff = 0;
while (index < minLen && (diff = Integer.parseInt(version1Array[index]) - Integer.parseInt(version2Array[index])) == 0) {
index ++;
}
if (diff == 0) {
for (int i = index; i < version1Array.length; i ++) {
if (Integer.parseInt(version1Array[i]) > 0) {
return 1;
}
}
for (int i = index; i < version2Array.length; i ++) {
if (Integer.parseInt(version2Array[i]) > 0) {
return -1;
}
}
return 0;
} else {
return diff > 0 ? 1 : -1;
}
}
标签:Java,Android
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
利用spring的拦截器自定义缓存的实现实例代码
2022-07-22 00:44:47
Java KeyGenerator.generateKey的19个方法代码示例
2022-08-08 14:26:40
Flutter 构建一个常用的页面框架
2022-10-02 02:54:19
![](https://img.aspxhome.com/file/2023/0/114370_0s.jpg)
SpringBoot集成Caffeine缓存的实现步骤
2023-08-23 05:44:11
详解Mybatis中的PooledDataSource
2022-10-24 18:08:11
Java泛型机制与反射原理相关知识总结
2023-11-11 06:02:15
![](https://img.aspxhome.com/file/2023/4/58914_0s.jpg)
C#检查键盘大小写锁定状态的方法
2022-01-11 18:00:39
C#采用HttpWebRequest实现保持会话上传文件到HTTP的方法
2023-07-18 17:20:29
C#利用win32 Api 修改本地系统时间、获取硬盘序列号
2021-11-23 06:52:24
Android中EditText和AutoCompleteTextView设置文字选中颜色方法
2022-12-05 04:45:30
![](https://img.aspxhome.com/file/2023/4/125424_0s.png)
使用工具类-java精确到小数点后6位
2021-06-24 20:45:39
Java 线程对比(Thread,Runnable,Callable)实例详解
2022-10-20 21:34:08
![](https://img.aspxhome.com/file/2023/5/75765_0s.png)
详解Java中的流程控制
2022-03-29 06:52:19
java实现文件拷贝的七种方式
2023-07-20 19:01:41
java参数传递之值传递和引用传递
2021-09-26 10:28:46
Java由浅入深带你精通继承super
2023-11-23 02:34:28
![](https://img.aspxhome.com/file/2023/7/59737_0s.png)
Java毕业设计实战之教室预订管理系统的实现
2023-03-03 20:38:11
![](https://img.aspxhome.com/file/2023/3/74873_0s.jpg)
Mybatis 缓存原理及失效情况解析
2022-12-04 07:28:43
![](https://img.aspxhome.com/file/2023/6/82996_0s.jpg)
Android基于opencv实现多通道分离与合并
2022-05-04 09:49:29
![](https://img.aspxhome.com/file/2023/8/110758_0s.gif)
C#配置文件操作类分享
2022-09-28 11:12:05