애플리케이션이 응답하지 않는다는 시스템 메시지이다.
유저가 화면을 터치함에도 불구하고 프로그램이 5초 동안 반응이 없다면, 안드로이드는 이를 용납하지 않고 강제로 어플리케이션을 종료한다.
발생 이유
ANR은 하나의 메인 스레드가 일정 시간 어떤 작업에 잡혀 있으면 발생한다.
무거운 작업들을 하나의 스레드에서 수행하면, action에 대한 반응이 늦춰짐에 따라 유저들을 자극하고, 결국 프로세스를 멈추게 한다.
터치 입력이 5초 내에 처리되지 않았을 때, 브로드캐스트가 10초 내에 처리되지 않았을 때 발생한다.
해결 방법
메인 스레드에서는 오직 UI 컴포넌트만 실행하고, 별도의 스레드에서 처리가 오래 걸리는 작업을 진행한다.
또한 ProgressBar를 이용해 작업의 진행 과정을 알려 사용자가 기다리도록 한다.
사용자의 편의성을 위해 ANR이 발생하지 않도록 유의해야 한다.
참고 출처
ANR의 의미와 예방: http://itmining.tistory.com/3
'Android' 카테고리의 다른 글
스레드 (Thread) - 1. 스레드와 핸들러 (0) | 2018.07.24 |
---|---|
Context (컨텍스트) (0) | 2018.07.20 |
프래그먼트(Fragment) 특징 (0) | 2018.07.17 |
바로가기 메뉴 (NavigationDrawer) (0) | 2018.07.11 |
뷰페이저 (ViewPager) (0) | 2018.07.10 |