使用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
0
投稿

猜你喜欢

  • 利用spring的拦截器自定义缓存的实现实例代码

    2022-07-22 00:44:47
  • Java KeyGenerator.generateKey的19个方法代码示例

    2022-08-08 14:26:40
  • Flutter 构建一个常用的页面框架

    2022-10-02 02:54:19
  • SpringBoot集成Caffeine缓存的实现步骤

    2023-08-23 05:44:11
  • 详解Mybatis中的PooledDataSource

    2022-10-24 18:08:11
  • Java泛型机制与反射原理相关知识总结

    2023-11-11 06:02:15
  • 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
  • 使用工具类-java精确到小数点后6位

    2021-06-24 20:45:39
  • Java 线程对比(Thread,Runnable,Callable)实例详解

    2022-10-20 21:34:08
  • 详解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
  • Java毕业设计实战之教室预订管理系统的实现

    2023-03-03 20:38:11
  • Mybatis 缓存原理及失效情况解析

    2022-12-04 07:28:43
  • Android基于opencv实现多通道分离与合并

    2022-05-04 09:49:29
  • C#配置文件操作类分享

    2022-09-28 11:12:05
  • asp之家 软件编程 m.aspxhome.com