2011-10-28 5 views
2

신청 범위로 방송을 시작할 수 있습니까? 즉, 응용 프로그램에서 방송이 감지되지 않습니까?안드로이드의 내부 방송

UI에 일부 이벤트를 전달하기 위해 브로드 캐스트를 사용하고있었습니다. 하지만 최근에 다른 앱에 대한 코드를 재활용했는데 방송이 두 애플리케이션을 깨우고있는 것으로 나타났습니다 (예상했던대로). 그래서 의도의 "행동"의 가치를 바꾸는 것 외에이 문제를 해결할 방법이 있는지 궁금합니다.

답변

3

내부 응용 프로그램 메시지 전달을 원할 경우 LocalBroadcastManager을 사용하여 정상적인 방송 대신 사용할 수 있습니다. 구현을 위해이 게시물을 읽으십시오 : how to use LocalBroadcastManager?.

1

예, Intent.setComponent()을 통해 구성 요소 이름을 사용할 수 있습니다.

브로드 캐스트가 항상 진행중인 경우 사용하지 않아도됩니다. 그렇습니까? 일반 함수 호출을 사용할 수 있습니다 ...

2

observer-observable pattern을 응용 프로그램의 Java 클래스 간 통신에 사용하지 않는 이유는 무엇입니까?

+0

이것은 메모리 누수가 발생하기 쉽기 때문에 안드로이드에서는 좋은 해결책이 아닙니다.UI 요소, 예 : 액티비티가 옵저버 인 경우, 액티비티가 재활용되기 전에 제대로 제거하지 못할 수도있는 많은 상황이 있습니다. 예를 들어, 활동이 시스템에 의해 종료되거나 충돌하는 경우 관찰 내용에서 활동을 계속 참조 할 수 있습니다. –

1

나는 당신이 명시 적 의도의 setComponent를 사용하는 경우, 그 작동합니다 당신을 위해 괜찮지 만, 암시 적 목적을 위해 당신이 사이 애 노젠 모드가 응용 프로그램

에 의해 제한 할 수없는 경우에, 당신의 행동을 변경해야합니다 생각 어디에서 응용 프로그램에 서명 할 수 있으며 휴대 전화에 무언가를 설치하는 사람을 의미하는 다른 서명을 가진 휴대 전화에 앱을 설치하지 못하게 할 수 있습니다. 아무도 새로운 앱을 설치할 수 없으며 (사용자를 제외하고) 아무도 수신기를 등록하지 않는다고 다시 설정할 수 있습니다

참고 : 앱에서 상호 통신을 위해 브로드 캐스트를 사용하는 것이 잘못되어 더 느립니다. 귀하의 경우 가능한 절차에 전화하십시오. 나는 당신이 정상적인 전화를해서는 안되는 이유를 알지 못합니다.

1

@Lukap : 서명 된 응용 프로그램은 에 필수적인 기능입니다. 인물 만이 허용 된 당사자 만이 설치된 응용 프로그램에 대한 업데이트/변경을 제공 할 수 있습니다.

Dev Guide

: 모든 응용 프로그램에 서명해야합니다

. 시스템은 서명되지 않은 경우 에뮬레이터 또는 장치에 응용 프로그램을 설치하지 않습니다.

플러스 :

참고 : 응용 프로그램에서 간 통신을위한 브로드 캐스트를 사용하여이 잘못

잘못된 것입니다. 안에 응용 프로그램을 사용하는 데는 여러 가지 이유가 있으며, 실제로 응용 프로그램 없이는 살 수없는 상황이 있습니다.

1

LocalBroadcastManager을 사용하십시오. 지원 라이브러리를 포함해야하지만이 방법은 시스템을 통해 글로벌 방송을 보내는 것보다 효율적이기 때문에이 문제를 해결하는 훌륭한 솔루션입니다.