Android 안드로이드

안드로이드 ANR (Application Not Responding)

macro 2020. 10. 16. 10:42
반응형

1. Android ANR (애플리케이션 응답 없음) 이 무엇인가?

  • Android 앱의 UI 스레드가 너무 오랫동안 차단되면 'ANR(애플리케이션 응답 없음)' 오류가 발생
  • 다음처럼 버튼을 누르면, 무한루프를 실행하는 코드를 작성하면, 무한루프때문에 유저의 버튼 클릭 등의 응답을 할 수가 없다.

IT 기술 이직 취업 안드로이드 ANR

 

  • 따라서 아래 그림과 같이 나오는것을 ANR 이라고 한다.

IT 기술 이직 취업 안드로이드 ANR

 

 

 

 

2. ANR이 발생하는 경우와 그 해결책은 무엇인가?

 

  • 안드로이드는 Main Thread ( UI Thread ) 가 UI 를 처리한다.
  • UI처리란? 유저가 탭하는 등의 일을 처리한다는 뜻! 

IT 기술 이직 취업 UI 메인쓰레드 UI쓰레드

 

  • 만약 UI 쓰레드에서 아래와 같이 오래 걸리는 일을 할 경우는, 다른 쓰레드에서 처리를 해 줘야 한다. 
    • 네트워크 통신, DB처리, 파일처리 등의 I/O 와 관련된 일을 처리하는 경우
    • 시간이 오래 걸리는 계산을 하는 경우

IT 기술 이직 취업 UI 메세지큐

 

  • 따라서, 개발자는 쓰레드와 쓰레드 풀을 만들어서 처리해야 하는데, 이러한 것들을 잘 활용할 수 있도록 라이브러리를 사용한다.
    • volley 나 retrofit2, glide 등의 라이브러리를 사용하면, 쓰레드나 쓰레드풀 걱정없이 사용할 수 있다.

 

 

 

3. 안드로이드 UI 핸들러 (Android UI Handler) 가 필요한 이유는?

 

  • 여러 쓰레드들이, 하나의 텍스트뷰에 모두 억세스하는 경우, Critical Section 이 되므로, 문제가 발생한다.

IT 기술 이직 취업 UI 핸들러

 

 

  • 따라서 순서를 정해서 처리할 수 있도록, 메세지 큐 (Message Queue)에 해야할 일을 넣고,
  • UI 핸들러(UI Handler)가 UI관련된 일을 전담하여 처리하면, 순서대로 문제없이 작업 할 수 있다.
  • UI 쓰레드안에, 메세지큐와 UI 핸들러가 있다.

IT 기술 이직 취업 전문

 

 

  • 아주 쉽게 결론을 예로 들자면,
  • 학생 20명이 선생님 1명에게 질문을 하려한다. 모두 손을 들고 질문하면 누구부터 질문 처리해야 하나?이때, 학생들이 질문할때, 선생님의 이메일로 질문을 보내 놓으면, 선생님은 이메일 온 순서대로 질문을 처리해 주면 된다.

 

 

 

IT 기술 이직 취업 전문

반응형