2011-01-10 11 views
8

나는 BroadcastReceiver으로 확장하고 onReceive()에는 내가해야 할 일을합니다. BroadcastReceiver 수신 수신 제한 시간

을 살해 할 수있는 시스템이 수신기 차단하기와 후보를 고려하기 전에 수 있습니다 것을 10 초의 제한 시간이

:

onReceive()

이 문서에서, 시간 제한이있다

디버그 모드에있을 때 문제가 발생합니다. 10 초 이상 필요합니다. 10 초 안에 모든 디버깅을하지 않으면 연결이 끊어지고 디버깅이 중지됩니다.

디버깅을 위해 시간 제한을 늘리거나 비활성화 할 수 있습니까?

감사합니다. 강제 종료에서 응용 프로그램을 방지하기 위해

+0

브로드 캐스트 리시버에서 1 초도 걸리지 않는 물건을 다루는 경우, 잘못하고있는 것입니다. – Falmarri

+4

아래에서 내 의견을 읽어보십시오. DEBUG 모드에 대해 이야기하고 있습니다. –

답변

11

디버깅하는 동안 중단 점에서 일시 중지 동안 개발 도구 응용 프로그램 설치를 시도하고 디버그 앱 설정 가능 :

당신을 수 있습니다을 응용 프로그램을 디버그로 선택하십시오. 당신은 디버거를 로 설정해야하지만이 값을 설정하면 두 가지 효과를 가지고하지 않습니다

  • 그것은 당신이 디버깅하는 동안 오랜 시간 동안 중단 일시 중지하면 오류를 던지고에서 안드로이드를 방지 할 수 있습니다 .

세부의 모든 현재 위치 : http://developer.android.com/tools/debugging/debugging-devtools.html

당신이 당신의 onReceive 방법에 복잡한 일을하는 경우는, 다음 BroadcastReceiverService을 시작하고 onReceive 내에서 얻는 데이터를 전달할 것을 고려하십시오. 그런 다음 Service은 더 긴 처리를 수행 할 수 있습니다.

+1

이것은 맞습니다. 방송 수신기의 유일한 목적은 데이터를 다른 것으로 전달하는 것입니다. – Falmarri

+1

얘들 아, 나는 너에게 동의한다. 당신 말이 맞아요. 출시 버전에서는 오래 걸리지 않아야합니다. 하지만 디버깅 모드에서 코드를 디버깅 할 때 말하고 있습니다. –

+0

"DEBUG"모드에 있어도 상관 없습니다. 리시버가 즉시 다른 구성 요소로 전달되도록하고 싶을 것입니다. 아마도 엘리베이터가 권장하는 서비스 일 것입니다.이것이 올바른 디자인이며 디버깅 및 문제 해결뿐만 아니라 수신기 타임 아웃을 일으키지 않는 것 (로깅을 수행하거나 서비스에서 더 오래 걸리는 것은 무엇이든)이 더 쉬울 것입니다. –

1

디버그 모드에서도이 문제가 발생했습니다. 메인 브로드 캐스트에서 다른 브로드 캐스트를 디버깅 중이기 때문에 다른 브로드 캐스트가 전송되고 처리되지 않은 것으로 나타났습니다. Android는 내 프로세스를 ANR 상태로 간주하여 전체 프로세스를 종료했습니다.

디버깅을하는 동안 다른 브로드 캐스트를 호출하지 않도록 코드를 임시로 수정해야했습니다.

+0

어떻게 exaclty를 수정 했습니까? 나는 똑같은 문제를 겪고있다. – Para

+0

@Para, 나는 브레이크 포인트로 시작하여 디버깅 중이던 섹션에서 브로드 캐스트를 보낸 코드를 주석 처리했습니다. –