2013-02-23 2 views
1

Android가 처음인데 작동 원리를 알고 싶습니다. 특히 각 방송 수신자가 별도의 스레드에서 실행됩니까?브로드 캐스트 수신기는 어떻게 작동합니까?

그렇지 않은 경우, 계산 집약적 인 작업이 수신기 외부에서 동시에 진행되고 있으며 동시에 별도의 응용 프로그램에서 수신기에 대한 브로드 캐스트가 전송되고 있다고 가정합니다. 그렇다면 집중적 인 작업이 끝나면 수신자가 요청을 관리 할 수있는 대기열이 있습니까? 아니면 요청을 무시합니까?

더 구체적으로 말하자면, 서버에 데이터를 보내고 응답을 받고 배터리 수명을 모니터링하는 애플리케이션을 작성하고 있습니다. 배터리 수명을 모니터링하는 방송 수신기에 대해 조금 회의적입니다. 배터리 수명이 바뀌 었음을 알리는 순간 전송됩니다.

미리 감사드립니다.

답변

1

특히 각 방송 수신자는 별도의 스레드에서 실행됩니까?

번호 onReceive()은 항상 프로세스의 주 응용 프로그램 스레드에서 호출됩니다.

그렇다면 집중식 작업이 끝났을 때 수신자가 수신 대기열을 관리하기 위해 대기열을 사용하고 있습니까?

"계산 집약적 인 작업"이 주 응용 프로그램 스레드에서 실행되어서는 안되며 따라서 브로드 캐스트의 적시 수신을 방해해서는 안됩니다.

+0

응답 해 주셔서 감사합니다. 나에게는 또 다른 질문이 있었다. 계산 집약적 인 작업은 다른 브로드 캐스트 수신기에서 실행됩니다. 새 스레드에서이 수신기를 시작하려면 어떻게합니까? – user2103008

+0

@ user2103008 : "계산 집약적 인 작업이 다른 브로드 캐스트 수신기에서 실행 중입니다." - 그건 좋은 생각이 아니야. "새 스레드에서이 수신기를 시작하려면 어떻게합니까?" - 그건 불가능합니다. 수신기가'IntentService'와 같은 백그라운드 스레드를 가질 수있는'Service'에 "계산 집약적 인 작업"을 위임하게하십시오. – CommonsWare

+0

@CommonsWare - 선생님, 수신자가 작업을 수행 할 수있는 최대 시간은 얼마입니까? 나는 프로세스가 길고 수신기에서 실행될 경우 애플리케이션이 ANR을 제공하고 애플리케이션이 5 초 이내에 응답하지 않을 때 발생한다는 것을 읽었으므로 수신자가 프로세스를 수행 할 수있는 최대 시간은 5 초라고 말할 수있다. ? 예, 저는 긴 프로세스에 대한 서비스를 갖고 있지만 그 기간을 알고 싶다고 생각합니다 :). –

관련 문제