안드로이드에는 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초
댓글 없음:
댓글 쓰기