Broadcast Receivers – Part 4, Ordered Broadcast Receivers

안녕 얘들 아 CodeTutor 여기 내 이름은 Anil Deshpande입니다 이전 이벤트가있을 때마다 본 비디오 발생, 당신은 그 특정 만들 수 있습니다 방송 수신기에 응답합니다

브로드 캐스트 리시버를 등록 할 수 있습니다 매니페스트 파일 또는 암호 그러나 이것이 항상 시나리오가 하나만있는 시나리오 응답 할 특정 브로드 캐스트 수신기 이벤트에 너는 더 많은 것을 가지고 있을지도 모른다 하나의 방송 수신자보다 모든 방송 수신기에서 이벤트가 발생합니다

듣기 위해 등록되었을 수도 있습니다 같은 사건 그래서이 세 명 모두 방송 수신기가 응답합니다 근데 뭐 주문을 관리하려면 이들 특정 방송 수신기 방아쇠를 당겼거나 메커니즘이있다 내가 통제 할 수있는 첫 번째 특정 브로드 캐스트 수신자가 트리거되고 첫 방송 수신기까지 그 처리를 완료한다 나는 그것을 원하지 않는다

두 번째 방송을보기 위해 만 첫 번째 완료 후 두 번째 가져 오기 트리거 된 다음 두 번째 완료 후 세 번째도 트리거됩니다 나는 또한하고 싶습니다 제 1 방송 수신기에서 데이터를 처리한다 그런 다음 두 번째 브로드 캐스트로 전달했습니다 수신기에서 처리 한 후 두 번째로 자세히 처리하고 싶습니다

제 3 방송 수신기 이것을하기 위해 우리는 Ordered라고 불리는 것을 사용합니다 방송 수신기 그래서이 비디오에서 우리는 이것을 달성하는 방법에 대한 데모를 볼 수 있습니다 내가 원하는 코드를 보여주기 전에 이것이 어떻게 달성되고 있는지 이해한다

데모 나는 두 가지를 구현할 것이다 방송 수신기 및 그 때 나는하고자했다 인 텐트를 트리거하고이 인 텐트가 이 두 개의 방송 수신기를 방아쇠를 당겼다 처음에는 그것들은 매니페스트에 등록되어있다 행동으로 파일하다 그리고 하나이며 같은

그리고 이러한 특정 방송 수신기 방아쇠를 당겼다 기본적으로 어떤 것을 기록 할 것인가? 브로드 캐스트 수신기가 처음으로 트리거 됨 이동 경로 형식 빵 부스러기 형식은 일반적으로 파일입니다 일반적으로 보는 네비게이션 시스템 메뉴 기반 UI에서 우리는 동일한 이동 경로 형식을 사용하여 특정 순서로 브로드 캐스트 수신기가 트리거됩니다 여기에 코드를 보여 드리겠습니다

나는 가지고있다 관찰 할 수있는 방송 수신기 방송 수신기 둘 다에서 방송 수신기 2, 로직 onReceive 메서드는 기본적으로 빵 부스러기를 만들고 그것에 기록하기 LogCat 나는에 대한 링크를 주었다 설명 섹션의 소스 코드 아래 동영상에서 다운로드 할 수 있습니다 코드를 작성하고 로직을 검토하십시오

그럼 내가 활동이 있고, 특히 나는 단추가 있고 나는 해당 버튼을 클릭하십시오 기본적으로 방송을 보내면 내가 등록한 목록 파일을 관찰하다 동일한 브로드 캐스트 수신기들 동작 및 범주 값 그럼 내가 이걸 실행하게 해줘 버튼을 클릭하면 방송 수신기 하나와 방송 수신기 2 개는 별도로 실행됩니다

그리고 네가 간다면 다시 매니페스트 파일로 돌아가서 주문을 변경하고 다시 실행하십시오 어떤면에서는 단지 다음 순서로 방송 수신기는 매니페스트 파일에 영향을 줄 수있는 그들이 실제로 얻는 순서 실행 이제 클릭하면 볼 수 있습니다 방송 수신기가 두 대 먼저 시작한 다음 시작했다 나는 인 텐트 필터의 우선 순위 값은 항상 정수이고 방법은 우선 순위가 높은 작품은 높은 작품 이 경우 방송에서의 우선 순위 수신기 하나가 우선 순위가 높습니다

일찍 처형 될테니까 다시 실행하십시오 방송 수신기 하나가 더 높다 우선 순위 그래서 그것이 expected 점점 명령을 계속 지키겠다 그것들은 명단에 선언되어있다

파일은 같지만 우선 순위는 변경하십시오 당신 이제는 방송을 볼 수 있습니다 수신기 2가 먼저 실행되고 다음 방송 수신기 하나 조차 나는 우선 순위를 바꿨지만 매니페스트의 브로드 캐스트 리시버 파일을 열면 순서가 변경됩니다 방송 수신기는 트리거 됨

그들은 유발되지만, 그들은 얻는다 독립적으로 실행됩니다 그러나 이것은 아니다 충분한 나는 기본적으로 통제하고 싶다

하나로부터 인 텐트 전파 방송 수신기 두 번째 브로드 캐스트 리시버로 전송합니다 에 내가해야 할 일은 다음과 같다 대신 버튼의 onClick 메서드 sendBroadcast라는 메소드를 사용하여, 다른 방법으로 sendOrderedBroadcast 너는 사용해야 해 그 특별한 방법과 매개 변수 그것이 취하는 것은 의도와 문자열입니다

허가 우리는 아무 것도 필요로하지 않기 때문에 이 권한을 특수화했다 특별한 경우 난 그냥 null을 전달할 수 있습니다 값 그래서이 강령을 실행할 수 있습니다 그럼 내가 시켜줘

이 특정 버튼을 클릭하십시오 첫 번째 방송 수신기에서 그것을 보아라 우리는 시작으로 출력을 얻고있다 -> 방송 수신기 하나 자동으로 컨트롤이 방송 수신기 2, 그리고 방송 수신기에서 우리는 이전의 breadcrumb 값은 시작 -> BroadcastReceiver1 그리고 나서 나는있다 태그를 추가합니다 그래서 그것은 방송 수신기 2입니다

그래서 우리가 달성 할 수 있었던 것 첫 번째 브로드 캐스트 수신기가 트리거되고, BroadcastReceiver1의 우선 순위 더 높고 처리가 끝난 후 방송 수신기의 데이터 하나는 자동으로 두 번째 방송 수신기가 트리거됩니다 때까지 BroadcastReceiver1 2 개의 방송 수신기를 완성한다 처형되지 않습니다 그리고 전송할 수 있습니다 방송 수신기 1에서 처리 된 데이터 BroadcastReceiver2

당신이 원한다면 내 말은 완전한 루프백이야 브로드 캐스트 리시버를 트리거 한 후 이 특정 버튼을 클릭하면, 브로드 캐스트 리시버로 가야한다 하나 그리고 나서 방송 수신기 2와 마지막으로 주요 활동으로 돌아온다 또 다른 방법이 있습니다 이것은 sentOrderedBroadcast의 오버로드 된 메소드

당신은 sentOrderedBroadcast, 나는 의도, 권한이 null이고 현재 익명의 내부 클래스를 만드는 방송 수신기 이게 뭐야? 방송 수신기는 그렇게 할 것이다 두 번째에서 빵 부스러기를 받다 방송 수신기, 그리고 마지막으로 첨부 다른 태그 다른 태그 대 / 소문자는 MainActivity입니다 그리고 마지막으로 그 특정 빵 부스러기를 LogCat

그럼 내가 이걸 실행하게 해줘 이제 클릭 할 때 이 특정 버튼을 관찰 할 것입니다 방송 수신기에서 시작 -> 방송 수신기 하나를 누른 다음 방송 수신자 2에 propepagtes 결국 방송 수신기 2 후, 그것은 MainActivity에옵니다 그래서 전달하는 방송 수신기 여기 sendOrderBroadcast에 대한 인수로, 기본적으로 최종 콜백 브로드 캐스트 최종 의도를 얻는다

그게 가져온다 우리는이 특별한 비디오의 끝까지 댓글 공유를 좋아하는 것을 잊지 마세요 동영상을보고 채널을 구독하십시오 갖다 걱정하다