안드로이드 ANR 이슈 해결 방법

안드로이드 스튜디오 AVD에서 특별한 이유 없이 나타나는 ANR 문제를 해결하는 방법.

안드로이드 ANR 문제 발생

지난주, Trindex 앱 업데이트 준비하면서 여느 때와 같이 안드로이드 스튜디오의 AVD를 켰고, 앱을 구동해 보았다. 그러자 이전까지 이상 없이 동작하던 앱이 갑작스럽게 먹통이 되는 모습을 보였다. 앱 부팅까지는 정상 동작하는 것처럼 보였는데, 이후 반응이 전혀 없었다.

딱 여기까지 동작한 뒤 먹통이 된다.
딱 여기까지 동작한 뒤 먹통이 된다.

이때 사용자 입력을 받게 되면 몇 초가 흐른 뒤 아래와 비슷한 ANR 메시지가 뜨면서 앱에서 튕겨나갔다. 전일 마지막으로 테스트를 했을 때에는 아무런 문제가 없었고, 이후 프로젝트에 변경된 내용도 전혀 없었기에 조금 황당한 현상이었다.

ANR 메시지 (출처: 안드로이드 개발자 페이지)
ANR 메시지 (출처: 안드로이드 개발자 페이지)

ANR 오류는 Application Not Respoding으로 사용자의 입력에도 불구하고 반응이 없을 때 발생하는 시스템 오류이다. 앞서의 언급처럼 쉽게 말해 먹통이 된 것이다. 어쨌든 문제를 해결해야 하니 원인이 되는 코드가 있는지를 점검해 보기로 했다.

ANR을 발생시킨 코드

MainActivity의 onCreate() 콜백 메소드에 위치한 애드몹 배너광고 초기화 코드
MainActivity의 onCreate() 콜백 메소드에 위치한 애드몹 배너광고 초기화 코드

앱 시작 시 애드몹 배너 광고를 준비하는 위 코드를 주석 처리하니 더 이상 ANR 문제가 발생하지 않았다. 원인은 여기에 있는 것 같은데, 그렇다면 그동안은 왜 정상적으로 동작했던 것일까?

그렇게 ANR 문제없이 애드몹 배너 광고를 사용할 수 있게 하기 위해 삽질하던 중 의외의 부분에서 해결책을 찾았다.

해결 방법

안드로이드 스튜디오 Device Manager의 Wipe Data 메뉴로 AVD 공장 초기화
안드로이드 스튜디오 Device Manager의 Wipe Data 메뉴로 AVD 공장 초기화

AVD의 사용자 데이터를 모두 삭제하여 기기를 초기화한 후 다시 기기를 부팅, 앱을 설치 및 사용해 보니 문제가 거짓말같이 사라졌다. 황당할 노릇이다. 코드에 문제가 없었던 것이라면 기기에 버그가 있는 게 아닐까 싶다.