반응형
1. Android ANR (애플리케이션 응답 없음) 이 무엇인가?
- Android 앱의 UI 스레드가 너무 오랫동안 차단되면 'ANR(애플리케이션 응답 없음)' 오류가 발생
- 다음처럼 버튼을 누르면, 무한루프를 실행하는 코드를 작성하면, 무한루프때문에 유저의 버튼 클릭 등의 응답을 할 수가 없다.
- 따라서 아래 그림과 같이 나오는것을 ANR 이라고 한다.
2. ANR이 발생하는 경우와 그 해결책은 무엇인가?
- 안드로이드는 Main Thread ( UI Thread ) 가 UI 를 처리한다.
- UI처리란? 유저가 탭하는 등의 일을 처리한다는 뜻!
- 만약 UI 쓰레드에서 아래와 같이 오래 걸리는 일을 할 경우는, 다른 쓰레드에서 처리를 해 줘야 한다.
- 네트워크 통신, DB처리, 파일처리 등의 I/O 와 관련된 일을 처리하는 경우
- 시간이 오래 걸리는 계산을 하는 경우
- 따라서, 개발자는 쓰레드와 쓰레드 풀을 만들어서 처리해야 하는데, 이러한 것들을 잘 활용할 수 있도록 라이브러리를 사용한다.
- volley 나 retrofit2, glide 등의 라이브러리를 사용하면, 쓰레드나 쓰레드풀 걱정없이 사용할 수 있다.
3. 안드로이드 UI 핸들러 (Android UI Handler) 가 필요한 이유는?
- 여러 쓰레드들이, 하나의 텍스트뷰에 모두 억세스하는 경우, Critical Section 이 되므로, 문제가 발생한다.
- 따라서 순서를 정해서 처리할 수 있도록, 메세지 큐 (Message Queue)에 해야할 일을 넣고,
- UI 핸들러(UI Handler)가 UI관련된 일을 전담하여 처리하면, 순서대로 문제없이 작업 할 수 있다.
- UI 쓰레드안에, 메세지큐와 UI 핸들러가 있다.
- 아주 쉽게 결론을 예로 들자면,
- 학생 20명이 선생님 1명에게 질문을 하려한다. 모두 손을 들고 질문하면 누구부터 질문 처리해야 하나?이때, 학생들이 질문할때, 선생님의 이메일로 질문을 보내 놓으면, 선생님은 이메일 온 순서대로 질문을 처리해 주면 된다.
IT 기술 이직 취업 전문
반응형
'Android 안드로이드' 카테고리의 다른 글
안드로이드 스튜디오 Git 연동 (Android studio Git / Github.com) (0) | 2020.10.06 |
---|