브로드캐스트 수신자
- 애플리케이션이 글로벌 이벤트(global event)를 받아서 처리하려면 브로드캐스트 수신자로 등록
- 글로벌 이벤트란 "전화가 왔습니다", "문자 메시지가 도착했습니다."와 같이 안드로이드
시스템 전체에 보내지는 이벤트
- 브로드캐스트 수신자는 인텐트필터를 포함하며, 매니페스트 파일에 등록함으로써 인텐트를 받을
준비를 함
- 수신자가 매니페스트 파일에 등록되었다면 따로 시작시키지 않아도 됨
- 애플리케이션은 컨텍스트 클래스의 registerReceiver 메소드를 이용하면 런타임 시에도 수신자를
등록할 수 있음
- 서비스처럼 브로드캐스트 수신자도 UI가 없음
인텐트와 브로드캐스트
- 인텐트를 이용해서 액티비티를 실행하면 포그라운드로 실행되어 사용자에게 보여지지만
브로드캐스트를 이용해서 처리하면 백그라운드로 동작하므로 사용자가 모름
- 인텐트를 받으면 onReceive() 메소드가 자동으로 호출됨
브로드캐스트의 구분
- 일반 브로드캐스트(sendBroadcase() 메소드로 호출)
비동기적으로 실행되며 모든 수신자는 순서없이 실행됨(때로는 동시에 실행됨)
효율적이나, 한 수신자의 처리 결과를 다른 수신자가 이용할 수 없고 중간에 취소불가
- 순차 브로드캐스트(sendOrderedBroadcase() 메소드로 호출)
한 번에 하나의 수신자에만 전달되므로 순서대로 실행됨. 중간에 취소하면 그 다음 수신자는
받지 못함. 수신자가 실행되는 순서는 인텐트필터의 속성으로 정할 수 있음 순서가 같으면
임의로 실행됨
현재 위에 코드는 MySMSReceiver라는 브로드캐스트 클래스를 매니페스트에 등록하는 것이다.
위에 일반적인 요소와 달리 intent-filter 엘리멘트가 하나 더 붙어 있는데
intent-filter란
시스템에게 처리할 암시적 인텐트들을 알려주는 것으로 명시적 인텐트들은
상관없이 항상 전달된다.
이런식으로 SMS를 받는 것을 인텐트 필터를 통해
백그라운드에서 받아들일 수 있다.
위 코드는 사용자에게 권한을 주는 구문으로 한번 써봤음!
출처 : http://lectroid.bnjsoft.com/5
'Mobile' 카테고리의 다른 글
[Android] Uri.parse 예제 소스 (0) | 2019.04.12 |
---|---|
[Android] LayoutInflater, inflater (0) | 2019.04.12 |
[Android] 안드로이드 4대 구성요소 (0) | 2019.04.11 |
[Android] Fragment (0) | 2019.04.11 |
[Android] 웹 브라우저 사용하기 (0) | 2019.04.11 |
댓글