SlideShare uma empresa Scribd logo
1 de 12
BroadcastReceiver
BroadcastReceiver(BR) 란?
• 시스템에서 발생되는 Event를 받아들여서
처리를 하는 통로.
• Broadcast: 시스템이 Event를 발송
Receiver: 이러한 Event를 받아서 처리.
• 예를 들어서,
문자가 도착을 한 경우
배터리가 떨어지는 경우
구현 방법
1. Manifest 파일에 등록: 받을 Event 및 처리자 규정
2. 처리자 선언 및 구현
BroadcastReceiver 구현 주의사항
• BR은 프로세스의 메인 쓰레드에서 실행
• 이는 10초 이내에 return을 해야 합니다.
– onReceive 메소드가 10초 내에 응답하지 않는 경우, 시스템은 App이 응답이 없
는 것으로 판단. ANR 발생에 의해서 사용자가 App을 강제로 죽일 수 있습니다.
– 즉 짧은 시간 내에 조처 후 return 하도록 구현
• Thread를 생성하여 비동기로 구현할까요?
– 이 방법은 의미가 없습니다.
– onReceiver가 return하면, Thread 완료와 관계 없이 BR 생명 주기가 마쳐지기 때문입
니다.
– 진짜??? 책에 쓰여있는데, 이게 맞는 이야기?
BR 구현 주의 사항 테스트.
.
.
ANR 발생
약 20초
BR내에서 Thread 테스트 코드
BR 내 Thread 테스트 결과
BroadCast 3회 호출
각기 다른 Thread 3개 동작
개별 Thread 정상 종료.
물론 ANR 없이!!
BR 구현 가이드
• 10초 이내에 (정확한 시간 보다는 바로 처리하게 구현한
다고 이해) 입력에 대한 처리를 마치도록 합니다. 그렇지
않으면 ANR이 발생됩니다.
• 이를 위해서 Thread를 사용하는 방법을 사용하는 것을
고려해보는 것도 좋습니다. 그렇지만, Thread 관리는 여
전히 어렵죠.
• onReceive에서 기본 처리 후, 시간이 소요될 작업이나 추
가적인 화면 연동을 위해서는 해당 함수 안에서 service
나 activity를 직접 start 시키도록 하자.
일시적 등록 관리
• Manifest 파일에 등록 않는 방법
• 일시적으로 Receive를 하고 싶을 때, 소스 코드를 통해서 설정이 가능합니다.
• 예를 들어서, 특정 UI 구성 요소를 특정 상태에 따라서 동적으로 노출을 하는 경우를
생각할 수 있습니다.
Context
Activity / Service
App 안에서 BR을 활용.
• Event 기반으로 신호를 단지 시스템에서만 받는 것이 아닙니다.
• 프로그램 적으로도 BR에 신호를 보낼 수 있으며, 이는 App 간/App
내 통신 수단으로 활용될 수 있습니다.
활용 가능성…
• 배터리/전원 상태 .. ACTION_BATTERY_CHANGED,
ACTION_BATTER_LOW ..
• SD 카드 상태 ..
ACTION_MEDIA_MOUNTED, ACTION_MEDIA_REMOVED ..
• SMS 수신 .. SMS_RECEIVED
• 여러 이벤트들이 있는데, 이들을 활용하는 것은 그 때 그 때
찾아봅시다. 그리고 주의할 점은 대부분 RECEIVE 받고자 하는
Event들에 대해서는 Permission이 필요합니다. 이 부분도 확
인하도록 합니다.
추가로 abort
Priority를 높여서, 먼저 broadcast를
수신한 뒤에 abortBroadcast 통해서
더 이상 broadcast가 전파되는 것을
막을 수 있습니다.

Mais conteúdo relacionado

Semelhante a 14 broad castreceiver

서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해중선 곽
 
Androidpn guide-0.5.0-ko
Androidpn guide-0.5.0-koAndroidpn guide-0.5.0-ko
Androidpn guide-0.5.0-kosandeepreddyp42
 
Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지Bansook Nam
 
웹서버 부하테스트 실전 노하우
웹서버 부하테스트 실전 노하우웹서버 부하테스트 실전 노하우
웹서버 부하테스트 실전 노하우IMQA
 
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 YoungSu Son
 
Bug sense 분석
Bug sense 분석Bug sense 분석
Bug sense 분석logdog
 
기술적 변화를 이끌어가기
기술적 변화를 이끌어가기기술적 변화를 이끌어가기
기술적 변화를 이끌어가기Jaewoo Ahn
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)수보 김
 
Tcp ip & io model
Tcp ip & io modelTcp ip & io model
Tcp ip & io modelNam Hyeonuk
 
Java performance and trouble shooting
Java performance and trouble shootingJava performance and trouble shooting
Java performance and trouble shootingAnna Choi
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드중선 곽
 
Deep dive into flink interval join
Deep dive into flink interval joinDeep dive into flink interval join
Deep dive into flink interval joinyeomii
 
하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기Mijeong Park
 
GS Neotek aws_Amazon_CloudFrontDay2018_session4
GS Neotek aws_Amazon_CloudFrontDay2018_session4GS Neotek aws_Amazon_CloudFrontDay2018_session4
GS Neotek aws_Amazon_CloudFrontDay2018_session4GS Neotek
 
SWDeveloperStory201501
SWDeveloperStory201501SWDeveloperStory201501
SWDeveloperStory201501Suho Kwon
 
21 application and_network_status
21 application and_network_status21 application and_network_status
21 application and_network_status운용 최
 
SpringMVC 전체 흐름 알아보기
SpringMVC 전체 흐름 알아보기SpringMVC 전체 흐름 알아보기
SpringMVC 전체 흐름 알아보기Myung Woon Oh
 
스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서ServerDevCamp
 
Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJSEunYoung Kim
 

Semelhante a 14 broad castreceiver (20)

서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해
 
Androidpn guide-0.5.0-ko
Androidpn guide-0.5.0-koAndroidpn guide-0.5.0-ko
Androidpn guide-0.5.0-ko
 
Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지
 
웹서버 부하테스트 실전 노하우
웹서버 부하테스트 실전 노하우웹서버 부하테스트 실전 노하우
웹서버 부하테스트 실전 노하우
 
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우
 
Bug sense 분석
Bug sense 분석Bug sense 분석
Bug sense 분석
 
기술적 변화를 이끌어가기
기술적 변화를 이끌어가기기술적 변화를 이끌어가기
기술적 변화를 이끌어가기
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
Tcp ip & io model
Tcp ip & io modelTcp ip & io model
Tcp ip & io model
 
Java performance and trouble shooting
Java performance and trouble shootingJava performance and trouble shooting
Java performance and trouble shooting
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드
 
Deep dive into flink interval join
Deep dive into flink interval joinDeep dive into flink interval join
Deep dive into flink interval join
 
하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기
 
GS Neotek aws_Amazon_CloudFrontDay2018_session4
GS Neotek aws_Amazon_CloudFrontDay2018_session4GS Neotek aws_Amazon_CloudFrontDay2018_session4
GS Neotek aws_Amazon_CloudFrontDay2018_session4
 
SWDeveloperStory201501
SWDeveloperStory201501SWDeveloperStory201501
SWDeveloperStory201501
 
21 application and_network_status
21 application and_network_status21 application and_network_status
21 application and_network_status
 
SpringMVC 전체 흐름 알아보기
SpringMVC 전체 흐름 알아보기SpringMVC 전체 흐름 알아보기
SpringMVC 전체 흐름 알아보기
 
스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서스마일게이트 서버개발캠프 - HGHSS - 합격하소서
스마일게이트 서버개발캠프 - HGHSS - 합격하소서
 
Parallel diary
Parallel diaryParallel diary
Parallel diary
 
Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJS
 

Mais de 운용 최

Wot(daliworks) 20131113
Wot(daliworks) 20131113Wot(daliworks) 20131113
Wot(daliworks) 20131113운용 최
 
NIPA SW Insight Report '13.08
NIPA SW Insight Report '13.08NIPA SW Insight Report '13.08
NIPA SW Insight Report '13.08운용 최
 
Agile Spirit Base On The Book "Agile Samuari"
Agile Spirit Base On The Book "Agile Samuari"Agile Spirit Base On The Book "Agile Samuari"
Agile Spirit Base On The Book "Agile Samuari"운용 최
 
20 handler and_async_task
20 handler and_async_task20 handler and_async_task
20 handler and_async_task운용 최
 
18 안드로이드 리스트뷰_속도향상
18 안드로이드 리스트뷰_속도향상18 안드로이드 리스트뷰_속도향상
18 안드로이드 리스트뷰_속도향상운용 최
 
19 나만의 view 만들기
19 나만의 view 만들기19 나만의 view 만들기
19 나만의 view 만들기운용 최
 
17 adapter view & db
17 adapter view & db17 adapter view & db
17 adapter view & db운용 최
 
16 데이터 저장과 사용
16 데이터 저장과 사용16 데이터 저장과 사용
16 데이터 저장과 사용운용 최
 
15 content provider
15 content provider15 content provider
15 content provider운용 최
 
13 service 좀더
13 service 좀더13 service 좀더
13 service 좀더운용 최
 
11 tablet 대응 가이드
11 tablet 대응 가이드11 tablet 대응 가이드
11 tablet 대응 가이드운용 최
 
10 view orientation_change
10 view orientation_change10 view orientation_change
10 view orientation_change운용 최
 
09 android keyboard & layout
09 android keyboard & layout09 android keyboard & layout
09 android keyboard & layout운용 최
 
08 fragment 태블릿 대응
08 fragment   태블릿 대응08 fragment   태블릿 대응
08 fragment 태블릿 대응운용 최
 
07 다양한 device_대응_방법
07 다양한 device_대응_방법07 다양한 device_대응_방법
07 다양한 device_대응_방법운용 최
 
06 activity stack and back, flag
06 activity stack and back, flag06 activity stack and back, flag
06 activity stack and back, flag운용 최
 

Mais de 운용 최 (20)

Wot(daliworks) 20131113
Wot(daliworks) 20131113Wot(daliworks) 20131113
Wot(daliworks) 20131113
 
NIPA SW Insight Report '13.08
NIPA SW Insight Report '13.08NIPA SW Insight Report '13.08
NIPA SW Insight Report '13.08
 
Agile Spirit Base On The Book "Agile Samuari"
Agile Spirit Base On The Book "Agile Samuari"Agile Spirit Base On The Book "Agile Samuari"
Agile Spirit Base On The Book "Agile Samuari"
 
Uml intro 1
Uml intro 1Uml intro 1
Uml intro 1
 
Uml intro 0
Uml intro 0Uml intro 0
Uml intro 0
 
20 handler and_async_task
20 handler and_async_task20 handler and_async_task
20 handler and_async_task
 
18 안드로이드 리스트뷰_속도향상
18 안드로이드 리스트뷰_속도향상18 안드로이드 리스트뷰_속도향상
18 안드로이드 리스트뷰_속도향상
 
19 나만의 view 만들기
19 나만의 view 만들기19 나만의 view 만들기
19 나만의 view 만들기
 
17 adapter view & db
17 adapter view & db17 adapter view & db
17 adapter view & db
 
16 데이터 저장과 사용
16 데이터 저장과 사용16 데이터 저장과 사용
16 데이터 저장과 사용
 
15 content provider
15 content provider15 content provider
15 content provider
 
13 service 좀더
13 service 좀더13 service 좀더
13 service 좀더
 
12 service
12 service12 service
12 service
 
11 tablet 대응 가이드
11 tablet 대응 가이드11 tablet 대응 가이드
11 tablet 대응 가이드
 
10 view orientation_change
10 view orientation_change10 view orientation_change
10 view orientation_change
 
09 android keyboard & layout
09 android keyboard & layout09 android keyboard & layout
09 android keyboard & layout
 
08 fragment 태블릿 대응
08 fragment   태블릿 대응08 fragment   태블릿 대응
08 fragment 태블릿 대응
 
08 font size
08 font size08 font size
08 font size
 
07 다양한 device_대응_방법
07 다양한 device_대응_방법07 다양한 device_대응_방법
07 다양한 device_대응_방법
 
06 activity stack and back, flag
06 activity stack and back, flag06 activity stack and back, flag
06 activity stack and back, flag
 

14 broad castreceiver

  • 2. BroadcastReceiver(BR) 란? • 시스템에서 발생되는 Event를 받아들여서 처리를 하는 통로. • Broadcast: 시스템이 Event를 발송 Receiver: 이러한 Event를 받아서 처리. • 예를 들어서, 문자가 도착을 한 경우 배터리가 떨어지는 경우
  • 3. 구현 방법 1. Manifest 파일에 등록: 받을 Event 및 처리자 규정 2. 처리자 선언 및 구현
  • 4. BroadcastReceiver 구현 주의사항 • BR은 프로세스의 메인 쓰레드에서 실행 • 이는 10초 이내에 return을 해야 합니다. – onReceive 메소드가 10초 내에 응답하지 않는 경우, 시스템은 App이 응답이 없 는 것으로 판단. ANR 발생에 의해서 사용자가 App을 강제로 죽일 수 있습니다. – 즉 짧은 시간 내에 조처 후 return 하도록 구현 • Thread를 생성하여 비동기로 구현할까요? – 이 방법은 의미가 없습니다. – onReceiver가 return하면, Thread 완료와 관계 없이 BR 생명 주기가 마쳐지기 때문입 니다. – 진짜??? 책에 쓰여있는데, 이게 맞는 이야기?
  • 5. BR 구현 주의 사항 테스트. . . ANR 발생 약 20초
  • 7. BR 내 Thread 테스트 결과 BroadCast 3회 호출 각기 다른 Thread 3개 동작 개별 Thread 정상 종료. 물론 ANR 없이!!
  • 8. BR 구현 가이드 • 10초 이내에 (정확한 시간 보다는 바로 처리하게 구현한 다고 이해) 입력에 대한 처리를 마치도록 합니다. 그렇지 않으면 ANR이 발생됩니다. • 이를 위해서 Thread를 사용하는 방법을 사용하는 것을 고려해보는 것도 좋습니다. 그렇지만, Thread 관리는 여 전히 어렵죠. • onReceive에서 기본 처리 후, 시간이 소요될 작업이나 추 가적인 화면 연동을 위해서는 해당 함수 안에서 service 나 activity를 직접 start 시키도록 하자.
  • 9. 일시적 등록 관리 • Manifest 파일에 등록 않는 방법 • 일시적으로 Receive를 하고 싶을 때, 소스 코드를 통해서 설정이 가능합니다. • 예를 들어서, 특정 UI 구성 요소를 특정 상태에 따라서 동적으로 노출을 하는 경우를 생각할 수 있습니다. Context Activity / Service
  • 10. App 안에서 BR을 활용. • Event 기반으로 신호를 단지 시스템에서만 받는 것이 아닙니다. • 프로그램 적으로도 BR에 신호를 보낼 수 있으며, 이는 App 간/App 내 통신 수단으로 활용될 수 있습니다.
  • 11. 활용 가능성… • 배터리/전원 상태 .. ACTION_BATTERY_CHANGED, ACTION_BATTER_LOW .. • SD 카드 상태 .. ACTION_MEDIA_MOUNTED, ACTION_MEDIA_REMOVED .. • SMS 수신 .. SMS_RECEIVED • 여러 이벤트들이 있는데, 이들을 활용하는 것은 그 때 그 때 찾아봅시다. 그리고 주의할 점은 대부분 RECEIVE 받고자 하는 Event들에 대해서는 Permission이 필요합니다. 이 부분도 확 인하도록 합니다.
  • 12. 추가로 abort Priority를 높여서, 먼저 broadcast를 수신한 뒤에 abortBroadcast 통해서 더 이상 broadcast가 전파되는 것을 막을 수 있습니다.