2016-07-15 3 views
0

내 응용 프로그램 클래스는 주로 현재 활동의 컨텍스트 및 기타 항목 (예 : 토스트, 대화 및 기타 등등)을 처리합니다. 내 응용 프로그램 클래스를 사용하고있는 다른 하나는 브로드 캐스트 수신기를 등록하는 것입니다. 활동의 맥락을 통하지 않고 응용의. 내가 알고 싶은 것은 : 브로드 캐스트 수신기가 내 UI (활동) 스레드를 차단합니까? (응용 프로그램을 통해 수신자에게 전화를 걸면 어떤 차이가 있습니까?) 또한 수신자를 응용 프로그램 컨텍스트에서 등록 할 수있는 옵션이 있습니다. 나는 그것을해야합니까? 아니면 다른 방법을 사용할 수 있습니까, 내 주요 스레드를 차단하지 않습니다? 감사합니다. 사용자가 명시 적으로 요청하지 않는 한이 [registerReceiver(BroadcastReceiver, IntentFilter, String, android.os.Handler)] (https://developer.android.com/reference/android/content/Context.html#registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String의 안드로이드를 사용하여 다른 스레드에서 예약 할 수 있도록응용 프로그램 컨텍스트를 통해 브로드 캐스트 수신기 등록

+0

'BroadcastReceiver'는 항상 UI 스레드에서 실행됩니다. – nukeforum

답변

0

BroadcastReceiverOnReceive()는 항상 그 프로세스의 메인 쓰레드 내에서 호출된다. Os.Handler)).

주 스레드에서 실행될 때는 절대로 장시간 실행하는 작업을해서는 안됩니다 (시스템이 허용 할 시간 초과가 10 초가되기 전에 수신자가 차단되고 후보가 제거 될 것으로 간주됩니다). onReceive() 구현에서 팝업 대화 상자를 시작할 수 없습니다.

관련 문제