2012-01-16 6 views
0

브로드 캐스트에 대해 한 가지 알고 싶습니다.활동 변경 중 브로드 캐스트가 끊깁니다.

두 개의 활동 A와 B가있는 경우. 또한 두 가지 활동의 onResume() 및 onPause()에 등록 된 브로드 캐스트 수신기가 있습니다. 하나의 활동이 일시 중지되었지만 다른 활동이 아직 재개되지 않은 경우 알림을 받으면 어떻게됩니까? 내 방송이 유실 되나요?

그런 경우에는 끈끈한 방송을 사용하면 좋겠습니까?

답변

0

저는 현재 귀하와 같은 상황에 있으며 스티커 방송으로 해결하고 있습니다.

문서에 따르면 고정 브로드 캐스트는 브로드 캐스트가 완료된 후에도 계속 남아 있습니다. 따라서 어떤 활동이 일시 중지 - 다시 시작주기 (방향 변경)에있는 경우 수신기를 onResume()에 등록하면 이러한 방송 알림을 받게됩니다.

removeStickyBroadcast(matchingIntent) (으)로 닫지 않고 계속 활동을 재개하면 다시 방송을들을 수 있기 때문에 "영원히"머물러 있기 때문에이 방송과 함께주의하십시오.

removeStickyBroadcast() 스티커 브로드 캐스트를 제거 sendStickyBroadcast()

스티커 방송을 전송합니다.

또한 매니페스트에 대한 액세스 권한이 BROADCAST_STICKY이어야합니다. 안에 넣어주세요 <manifest> 태그 :

<uses-permission android:name="android.permission.BROADCAST_STICKY"/> 
+0

감사합니다. Andres. 나는 [스레드] (http://groups.google.com/group/android-developers/browse_thread/thread/f37e3549a5e1be66) 특히 마지막 게시물을 읽은 후에 조금 혼란스러워합니다. cross-apllication 호출을 위해 끈끈한 방송을 사용해야하는 것에 대한 진술은 설득력있게 보인다. – Ivan

+1

나는 끈적 거리는 방송으로 나의 시험 동안에 동일한 기사를 읽었다. 기사 세부 사항에 따라 방송 된 의도가 액션, 데이터, 카테고리 및 유형과 일치하면 끈적 거리는 방송이 대체됩니다. 이 필드를 동일하게 유지하고 인 텐트 엑스트라를 변경하면 항상 최신 방송을 볼 수 있습니다. 브로드 캐스트는 모든 시스템을 통해 전송되므로 다른 앱이이를 잡을 수 없도록 의도 한 동작에 접두어로 패키지 이름을 첨부하는 것이 좋습니다. 예 : intent.setAction ([PACKAGE_NAME] .update). – Andres

+0

이 답변이 게시되었을 당시 유효한 해결책 이었지만 Lollipop, API 21 이후로 끈적 거리는 방송은 더 이상 사용되지 않습니다. – Sufian

관련 문제