728x90

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

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


이를 보완한 코드 예제다.

서버의 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();
    }
}


블로그 이미지

Link2Me

,