Java 코드를 사용하여 Android 클라이언트 버전 번호 비교

1434 단어 JavaAndroid
포인트
왜 String을 사용할 수 없는지.compareTo 방법으로 클라이언트 버전 번호를 비교합니까?
예를 들어 이전의 클라이언트 버전 번호는 9.9.9였고 서버 측의 최신 클라이언트 버전 번호는 10.0.1로 10.0.1이 9.9보다 현저히 높았지만compareTo 방법에 따르면 이 9.9.9는 10.0.1보다 커서 클라이언트 버전 번호가 비교적 잘못되었다.
Java 코드 구현
좀 잡아당겼는데 마지막에 코드를 보여줘야 돼요. 다음은 제 클라이언트 버전 번호 비교 코드입니다.
   

 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;
    }
  }


좋은 웹페이지 즐겨찾기