본문 바로가기

안드로이드

안드로이드 - ANR

1. ANR - Application Not Responding : 어플리케이션 응답 없음

 

2. 발생 이유

1) 5초 이상 사용자의 입력에 반응하지 않을 때

(UI스레드에 어떠한 I/O명령으로 인해 막힐 때)

 

2) 브로드캐스트 리시버가 10초 이내로 리턴하지 않을 때

 

예)

1) Input 이벤트에 5초 안에 반응하지 않을 때

 

2) 브로드캐스트 리시버가 10초 이내 실행 끝내지 않을 때

위 상황의 경우 OS가 관여하여 ANR 창을 띄움

(Main Thread가 일정 시간 Task에 잡혀있을때 발생)

 

3.ANR 피하기

Main Thread에서 실행되는 method는 최소한의 일을 하도록 해야한

특히 onCreate(), onResume()같은 핵심 생명주기에서는 작은 일을 수행

 

1) 네트워크, DB같은 길게 실행될 가능성 있는 작업

2) 비트맵 크기 조정하는 계산이 필요한 작업

-> Thread 생성해서 처리한다.

 

4. ANR의 필요성

안드로이드 OS를 사용하는 단말기는 대부분 작은 화면에 터치를 이용

-> 빠른 응답을 얻어 내는 일을 함.

 

출처 : https://ssss44.tistory.com/7