ANR : Application Not Responding
안드로이드 앱의 메인(UI) 스레드가 너무 오랫동안 일정 시간 어떤 Task에 잡혀 있으면 발생하게 된다. 'ANR(애플리케이션 응답없음)' 오류가 나타나게 된다.
주로 발생하는 원인 :
- Android 앱의 UI 쓰레드가 너무 오랫동안 차단되면 ANR 오류가 발생한다.
- 네트워크 통신을 할때 네트워크가 안 좋은 환경에서 통신을 수행할 때 발생 가능.
ANR이 발생하는 경우
-
- Input 이벤트(키를 누르거나 화면 터치 등)에 5초 안에 반응하지 않을 때
- 브로드캐스트 리시버가 10초 내로 실행을 끝내지 않을 때(UI가 없는 브로드캐스트 리시버, 서비스도 실행 주체는 메인 쓰레드이므로 긴 시간을 소모하는 작업일 경우 ANR을 발생시킴)
ANR 해결방법?
- 시간 소모가 많은 작업(데이터 수신)은 스레드를 통해 처리하라.
- 네트워킹, DB 트랜잭션 (I/O 작업 등) 등 많은 시간동안 수행해야 하는 작업의 경우 ANR 발생 가능성이 매우 높기 때문에 별도의 쓰레드를 사용
- 사용자에게 프로그레스바 등을 이용해 작업의 진행 과정을 안내해 기다리도록 한다.
'안드로이드 자바 코틀린 기초 지식 > 안드로이드 기초 지식' 카테고리의 다른 글
바뀐 Fragment 생명주기 (0) | 2023.02.27 |
---|---|
Activity LifeCycle ( 생명주기) (0) | 2023.02.27 |
Activity와 Fragment (0) | 2023.02.26 |
안드로이드 4대 컴포넌트 (0) | 2023.02.25 |
Manifest 란 (0) | 2022.11.20 |