[안드로이드 공부]/UI

안드로이드 BroadcastReceiver ANR

코코모아 2018. 12. 7. 15:25

아래는 코모스튜디오가 직접 만든 무료 앱이에요
(한 번만 봐주세요 ^^)

01

02

03

정각알림 만들기(말하는시계)

말하는 시계 (취침, 자전거) 

말하는 타이머 음성 스톱워치 

브로드 캐스트 리시버 에서는 10 초 이내에 모든 작업을 완료 해야함. 

그렇지 않으면 시스템이 죽여 버리거나, ANR을 발생 시킨다.


1. onReceive 에서 최대한 간결하게 코드를 처리 한다.

1.1 다른 서비스로 리턴 시킨다.

1.2 또는 goAsync()를 사용 하여 타임아웃을 연장 한다.


아래는 구글의 설명이다.



즉.


@Override

    public void onReceive(final Context context, final Intent intent) {

 PendingResult asyncResult = goAsync()


작업...


asyncResult.finish();

}


요렇게 하면 작업을 하는 동안 10초 이상 계속 붙들어 놓을 수 있다.


1.2.2 AsyncTask

--> 만약 리시버에서 AsyncTask를 사용 한다면, 비동기 작업이 끝난 이후에 (onPostExecute)

asyncResult.finish(); 코드를 호출 해야 한다.


간단하지만, 강력한 비법이다.

모든 게시물은 코모스튜디오의 소유이며, 무단 복제 수정은 절대 불가입니다.
퍼가실 경우 댓글과 블로그 주소를 남기고 해당 게시물에 출처를 명확히 밝히세요.