common_utils
common_utils copied to clipboard
add compare versionCode
String v1 ="1.0.1"
String v2 ="1.0.2"
v1 > v2
`
// 0代表相等,1代表version1大于version2,-1代表version1小于version2
static int compareVersion(String version1, String version2) {
if (Utils.isEmpty(version1) || Utils.isEmpty(version2)) {
return 0;
}
if (version1 == version2) {
return 0;
}
List<String> v1Arr = version1.split(".");
List<String> v2Arr = version2.split(".");
int index = 0;
// 获取最小长度值
int minLen = min(v1Arr.length, v2Arr.length);
int diff = 0;
while (index < minLen && (diff = getIntByValueStr(v1Arr[index]) - getIntByValueStr(v2Arr[index])) == 0) {
index++;
}
if (diff == 0) {
// 如果位数不一致,比较多余位数
for (int i = index; i < v1Arr.length; i++) {
if (getIntByValueStr(v1Arr[i]) > 0) {
return 1;
}
}
for (int i = index; i < v2Arr.length; i++) {
if (getIntByValueStr(v2Arr[i]) > 0) {
return -1;
}
}
return 0;
} else {
return diff > 0 ? 1 : -1;
}
}
`
一般情况下,版本比较都是放在在服务端的呢,有可能用的versionCode或versionName;升级,强制升级都是服务端在判定。
static int compareVersion(String val1, String val2) {
var arr1 = val1.split(".");
var arr2 = val2.split(".");
int length = arr1.length >= arr2.length ? arr1.length : arr2.length;
int diff = 0;
int v1;
int v2;
for (int i = 0; i < length; i++) {
v1 = i < arr1.length ? int.parse(arr1[i]) : 0;
v2 = i < arr2.length ? int.parse(arr2[i]) : 0;
diff = v1 - v2;
if (diff == 0)
continue;
else
return diff > 0 ? 1 : -1;
}
return diff;
}