신청 범위로 방송을 시작할 수 있습니까? 즉, 응용 프로그램에서 방송이 감지되지 않습니까?안드로이드의 내부 방송
UI에 일부 이벤트를 전달하기 위해 브로드 캐스트를 사용하고있었습니다. 하지만 최근에 다른 앱에 대한 코드를 재활용했는데 방송이 두 애플리케이션을 깨우고있는 것으로 나타났습니다 (예상했던대로). 그래서 의도의 "행동"의 가치를 바꾸는 것 외에이 문제를 해결할 방법이 있는지 궁금합니다.
신청 범위로 방송을 시작할 수 있습니까? 즉, 응용 프로그램에서 방송이 감지되지 않습니까?안드로이드의 내부 방송
UI에 일부 이벤트를 전달하기 위해 브로드 캐스트를 사용하고있었습니다. 하지만 최근에 다른 앱에 대한 코드를 재활용했는데 방송이 두 애플리케이션을 깨우고있는 것으로 나타났습니다 (예상했던대로). 그래서 의도의 "행동"의 가치를 바꾸는 것 외에이 문제를 해결할 방법이 있는지 궁금합니다.
내부 응용 프로그램 메시지 전달을 원할 경우 LocalBroadcastManager을 사용하여 정상적인 방송 대신 사용할 수 있습니다. 구현을 위해이 게시물을 읽으십시오 : how to use LocalBroadcastManager?.
예, Intent.setComponent()
을 통해 구성 요소 이름을 사용할 수 있습니다.
브로드 캐스트가 항상 진행중인 경우 사용하지 않아도됩니다. 그렇습니까? 일반 함수 호출을 사용할 수 있습니다 ...
observer-observable pattern을 응용 프로그램의 Java 클래스 간 통신에 사용하지 않는 이유는 무엇입니까?
나는 당신이 명시 적 의도의 setComponent를 사용하는 경우, 그 작동합니다 당신을 위해 괜찮지 만, 암시 적 목적을 위해 당신이 사이 애 노젠 모드가 응용 프로그램
에 의해 제한 할 수없는 경우에, 당신의 행동을 변경해야합니다 생각 어디에서 응용 프로그램에 서명 할 수 있으며 휴대 전화에 무언가를 설치하는 사람을 의미하는 다른 서명을 가진 휴대 전화에 앱을 설치하지 못하게 할 수 있습니다. 아무도 새로운 앱을 설치할 수 없으며 (사용자를 제외하고) 아무도 수신기를 등록하지 않는다고 다시 설정할 수 있습니다
참고 : 앱에서 상호 통신을 위해 브로드 캐스트를 사용하는 것이 잘못되어 더 느립니다. 귀하의 경우 가능한 절차에 전화하십시오. 나는 당신이 정상적인 전화를해서는 안되는 이유를 알지 못합니다.
@Lukap : 서명 된 응용 프로그램은 에 필수적인 기능입니다. 인물 만이 허용 된 당사자 만이 설치된 응용 프로그램에 대한 업데이트/변경을 제공 할 수 있습니다.
: 모든 응용 프로그램에 서명해야합니다. 시스템은 서명되지 않은 경우 에뮬레이터 또는 장치에 응용 프로그램을 설치하지 않습니다.
플러스 :
참고 : 응용 프로그램에서 간 통신을위한 브로드 캐스트를 사용하여이 잘못
잘못된 것입니다. 안에 응용 프로그램을 사용하는 데는 여러 가지 이유가 있으며, 실제로 응용 프로그램 없이는 살 수없는 상황이 있습니다.
LocalBroadcastManager을 사용하십시오. 지원 라이브러리를 포함해야하지만이 방법은 시스템을 통해 글로벌 방송을 보내는 것보다 효율적이기 때문에이 문제를 해결하는 훌륭한 솔루션입니다.
이것은 메모리 누수가 발생하기 쉽기 때문에 안드로이드에서는 좋은 해결책이 아닙니다.UI 요소, 예 : 액티비티가 옵저버 인 경우, 액티비티가 재활용되기 전에 제대로 제거하지 못할 수도있는 많은 상황이 있습니다. 예를 들어, 활동이 시스템에 의해 종료되거나 충돌하는 경우 관찰 내용에서 활동을 계속 참조 할 수 있습니다. –