본문 바로가기

안드로이드 자바 코틀린 기초 지식/안드로이드 기초 지식

ANR (Application Not Responding)

ANR : Application Not Responding

안드로이드 앱의 메인(UI) 스레드가 너무 오랫동안 일정 시간 어떤 Task에 잡혀 있으면 발생하게 된다. 'ANR(애플리케이션 응답없음)' 오류가 나타나게 된다.

 

주로 발생하는 원인 : 

  • Android 앱의 UI 쓰레드가 너무 오랫동안 차단되면 ANR 오류가 발생한다.
  • 네트워크 통신을 할때 네트워크가 안 좋은 환경에서 통신을 수행할 때 발생 가능.

ANR이 발생하는 경우

    • Input 이벤트(키를 누르거나 화면 터치 등)에 5초 안에 반응하지 않을 때
    • 브로드캐스트 리시버가 10초 내로 실행을 끝내지 않을 때(UI가 없는 브로드캐스트 리시버, 서비스도 실행 주체는 메인 쓰레드이므로 긴 시간을 소모하는 작업일 경우 ANR을 발생시킴)

ANR 해결방법?

  1.  시간 소모가 많은 작업(데이터 수신)은 스레드를 통해 처리하라.
    1. 네트워킹, DB 트랜잭션 (I/O 작업 등) 등 많은 시간동안 수행해야 하는 작업의 경우 ANR 발생 가능성이 매우 높기 때문에 별도의 쓰레드를 사용
  2.  사용자에게 프로그레스바 등을 이용해 작업의 진행 과정을 안내해 기다리도록 한다.