2013-10-06 2 views

답변

1

매니페스트에 등록 registerReceiver()를 사용하여 브로드 캐스트 리시버 프로그래밍 할 등록의 장점이있다 : - OS가 마술 onReceive를 호출 찾아 필요한 경우 클래스의 인스턴스를() 메소드 , 응용 프로그램의 실행 상태에 관계없이 - 수신은 브로드 캐스트 당 한 번만 호출됩니다 (즉, 매니페스트에 등록하는 것이 브로드 캐스트를 수신하기 위해 '클래스'를 등록하는 것과 같다고 생각할 수 있습니다.) 브로드 캐스트는 필요에 따라 클래스를 인스턴스화합니다)

프로그래밍 방식 : - 코드에 등록한다는 것은 c의 인스턴스를 등록하고 있음을 의미합니다. 브로드 캐스트 메시지 (즉, 코드가 약간 엉망이고 여러 번 등록을 관리하면 브로드 캐스트를 호출하는 onReceive()가있는 여러 개의 BroadcastReceiver 인스턴스로 끝납니다. 등록을 취소하려면 이전에 등록한 특정 BroadcastReceiver 인스턴스의 등록을 취소해야합니다 - OS가 응용 프로그램을 파괴하면 onReceive() 메서드가 방송용으로 호출되지 않습니다.

+0

따라서 응용 프로그램이 실행되지 않아도 BroadCastReceiver를 실행하려면 Manifest에 BroadCastReceiver를 등록하는 것이 가장 좋습니다. 그 맞습니까? – saravanan

+1

정확히 ACTION_BATTERY_CHANGED와 같이 manafist에서 등록하고 다른 프로그램에서 SMS_RECEIVED 및 PHONE_STATE와 같이 프로그래밍 방식으로 등록 할 수없는 일부 BroadCastReceiver는 작동하지 않습니다. – Basbous

+0

Menifest에 등록한 경우 BroadCastReceiver가 ACTION_BATTERY_CHANGED에 대해 해고되지 않는 이유는 무엇입니까? 그리고 왜 프로그래밍 방식으로 SMS_RECEIVED 및 PHONE_STATE를 등록 할 수 있습니까? 이러한 세 가지 예외적 인 또는 다른 예외적 인 목록의 다른 조치가 있습니까? – saravanan

관련 문제