본문 바로가기
Mobile

[ Android ] 브로드캐스트 수신자

by 기저귀찬개발자 2019. 4. 11.

브로드캐스트 수신자

 

- 애플리케이션이 글로벌 이벤트(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

댓글