안드로이드
안드로이드 ANR
start1a
2020. 1. 13. 13:35
ANR (Application Not Responding)
- 안드로이드 앱 실행 시 중지되는 시스템 현상
- '애플리케이션이 응답하지 않는다'
- Main Thread(UI Thread)가 일정 시간 어떤 Task에 잡혀 있으면 발생함
ANR의 발생 요인
ANR은 대체로 아래의 상황에서 발생하게 된다.
- 애플리케이션이 UI 스레드에 어떠한 I/O 명령(빈번한 네트워크 액세스)으로 인해 막힐 때
- 너무 많은 시간을 정교한 메모리 구조를 구축하는데 들일 때
구체적으로 설명하자면 Android Developers 에서는 아래와 같이 명시하고 있다.
- Input 이벤트(키를 누르거나 화면을 터치하는 등)에 5초안에 반응을 하지 않을 때
- BroadcatReceiver 가 10초내로 실행을 끝내지 않을 때 (UI가 없는 브로드캐스트 리시버, 서비스도 실행 주체가 메인스레드이므로 긴 시간을 소모하는 작업인 경우 ANR을 발생시킨다.)
ANR 예방 설계
- 시간 소모가 많은 작업은 다른 스레드를 통해 처리
- Main 스레드에서 실행되는 메서드(특히 생명주기 메서드)는 일을 최소한으로 줄임
- 사용자에게 프로그레스 바와 같은 로딩 중인 이미지를 그려 대기시킴
ANR의 필요성
- 안드로이드 OS를 사용하는 단말기는 대부분 스마트폰이나 패드 같은 작은 화면에 터치를 이용해 빠른 응답을 얻어내는 일을 함
- 프로그레스 바처럼 진행 중임을 알리는 UI가 없으면 사용자는 작동을 멈춘 것이라 생각하고 종료함
- 사용자의 편의성을 제공할 수 있도록 ANR을 예방하는 것이 중요함
https://itmining.tistory.com/3
[안드로이드] ANR의 의미와 예방
이 글은 PC 버전 TISTORY에 최적화 되어있습니다. 서론 안드로이드 앱을 구현하여 돌리다보면, 또는 플레이스토어에 올라온 앱임에도 불구하고, 앱의 중지를 알리는 메시지를 심심치 않게 봤을 것이다. 이러한 시..
itmining.tistory.com