2016년 8월 2일 화요일

Android 이론 - Time out 문제 (5초, 10초 룰)


안드로이드에는 2가지 TIMEOUT 제약이 있다.

5초룰과 10초룰

5초룰로 더 유명한 에러는 ANR이라고 일컬어 지는 에러이다.
ANR 이란 Activity Not Response 의 약자 이다.

사전적 의미는 Activity 응답 없음

개발 하면서 고려 해야 할 것은 화면 event 발생으부터 logic 처리 완료까지 5초 안에 끝내야 한다는 것이다.
대부분의 네트워킹 관련 로직이 있으면 내포하고 있는 문제이다.
안드로이드 개발자라면 반드시 고려하고 구현해야 하는 부분이다.

[솔루션]
1. Thread로 처리 하면 문제 없음
 -> android 개발자라면 NW 처리 이벤트는 무조건 Thread 처리

BUT, Thread로 처리하면 생기는 문제

사용자 정의 Thread 는 UI Thread 에서 생성할텐데
문제는 개발자 정의 Thread 가 View 객체에 접근이 불가하다는 것이다.(Run time error)
View 객체는 UI Thread 에서만 제어 가능하다.
 -> Handler 로 해결 가능, Thread 에서 Handler 를 이용하면 의뢰 형식으로 간접제어 가능

2. IntentService

IntentService 는 서비스와 거의 동일하지만,
해당 작업이 완료 되면 알아서 종료 (Service 는 스스로 종료 불가)
완료된 작업은 ResultReceiver 이용


p.s.
10초룰
 : Broadcast receiver 가 logic 처리 완료까지의 시간 10초


댓글 없음:

댓글 쓰기