안드로이드/버그탈출

안드로이드 버전 정보 비교 로직 에러

Link2Me 2019. 9. 25. 23:44

서버가 죽을 수도 있다는 가정하에 코드를 구현했어야 하는데 이를 고려하지 못하니까 어플이 진입도 하지 못하고 죽는 현상이 발생했다.

초보 개발자의 로직 에러다.


이를 보완한 코드 예제다.

서버의 httpd 데몬을 죽여서 전달되는 메시지를 보고, 아래와 같이 failed 라는 글자가 포함되어 있으면, 버전 체크하지 말고 그냥 다음 단계를 실행하도록 했다.

version = Value.getVersionName(mContext);
version = version.replaceAll("[^0-9]", ""); // 버전에서 숫자만 추출

Log.d("WEB", "Response: " + response);
if(response.contains("failed")){ // 서버가 동작하지 않을 때의 메시지에 포함된 걸 체크하라.
    Log.e("WEB", "Server isConnected failed.");
    startActivity(new Intent(getApplication(), MainMenu.class));
    finish();
} else {
    Log.e("WEB", "Server Version : " + response);
    Response = response.replaceAll("[^0-9]", ""); // 버전에서 숫자만 추출
    if (Integer.parseInt(version) < Integer.parseInt(Response)) { // 서버 버전이 더 높으면
        UpgradeProcess();
    } else {
        startActivity(new Intent(getApplication(), MainMenu.class));
        finish();
    }
}


728x90