Понедельник, 19 августа 2019

브로드캐스트 리시버 예제

30

프로젝트는 브로드캐스트 수신기의 존재를 공고해야 하며 수신기가 관심 있는 브로드캐스트 의도를 지정하는 의도 필터를 포함해야 합니다. 이전 섹션에서 BroadcastReceiver 클래스가 만들어졌을 때 Android Studio는 매니페스트 파일에 요소를 자동으로 추가했습니다. 따라서 SendBroadcastActivity.java 파일 내에 코드를 추가하여 의도 필터를 만들고 수신기를 등록하는 것만하면 myBroadcastIntent 및 sendMessage 문자열을 정의하지 않았기 때문에 이러한 일이 발생합니다. 예를 들어 응용 프로그램은 부팅 완료 또는 배터리 부족과 같은 다양한 시스템 이벤트에 등록할 수 있으며, Android 시스템은 특정 이벤트가 발생할 때 브로드캐스트를 전송합니다. 모든 응용 프로그램은 자체 사용자 지정 브로드캐스트를 만들 수도 있습니다. 수정된 BroadcastReceiver 패키지를 다시 설치하여 수신기를 테스트합니다. SendBroadcast 응용 프로그램의 단추를 터치하면 사용자 지정 작업 문자열이 포함된 새 메시지가 생성됩니다. 브로드캐스트 수신기를 선택합니다. 반환 결과가 필요한 경우 대신 sendOrderedBroadcast() 메서드를 사용해야 합니다.

이 방법을 사용하여 브로드캐스트 의도를 전송하면 등록된 관심사를 가진 각 브로드캐스트 수신기에 순차적으로 전달됩니다. 예를 들어 활동의 컨텍스트를 사용하여 onCreate(번들)에 수신기를 등록하는 경우 와 같은 수신자를 등록하고 등록취소하는 위치를 염두에 두고 활동 컨텍스트에서 수신기가 누출되지 않도록 onDestroy()에 등록취소해야 합니다. onResume()에 수신기를 등록하는 경우 onPause() 에서 수신기를 등록 취소하여 여러 번 등록하지 않아야 합니다(일시 중지시 브로드캐스트를 수신하지 않으려는 경우 불필요한 시스템 오버헤드를 줄일 수 있음). 사용자가 기록 스택에서 다시 이동하는 경우 호출되지 않으므로 onSaveInstanceState(번들)에서 등록을 취소하지 마십시오. 브로드캐스트 수신기(registerReceiver, IntentFilter, 문자열, 처리기)를 등록할 때 권한 매개 변수를 지정하거나 매니페스트에 태그를 지정한 경우 권한을 요청한 브로드캐스터만 매니페스트의 태그(그리고 위험한 경우 이후에 사용 권한이 부여)는 수신기에 의도를 보낼 수 있습니다.