안드로이드 기초 라디오

브로드캐스트
시스템 수준의 메시지 알림에 편리하도록 안드로이드는 유사한 방송 메시지 메커니즘을 도입했다.브로드캐스트 유형: 순서 및 무질서(표준 브로드캐스트)
무질서: 완전히 비동기적으로 실행되는 방송으로 방송이 나간 후 모든 방송 수신기는 거의 같은 시간에 이 방송을 수신한다.그들 사이에는 어떤 선후 순서도 없고 효율이 비교적 높지만 동시에 차단될 수 없다는 것을 의미한다.
질서: 일종의 동시 실행 방송이다.방송이 나간 후 같은 시간에 하나의 수신기만 이 방송을 수신할 수 있고 수신기가 처리된 후에만 방송이 계속 전달될 수 있다. 수신기는 선후 순서가 있기 때문에 우선순위를 설정할 수 있고 방송을 차단할 수 있다. 네, 뒤에 있는 수신기는 방송을 수신할 수 없다.
시스템 방송을 받아들여android에 많은 시스템의 방송을 내장하여 응용 프로그램에서 이러한 방송을 감청하여 시스템의 상태 정보를 얻을 수 있다. 예를 들어 켜는 방송, 전량 변화 방송, 네트워크 변화 방송 등이다.등록 방송은 두 가지 방식이 있는데 그것이 바로 동적 등록과 정적 등록이다. 코드에서 동적 등록으로 등록하고 안드로이드 매니페스트에서 정적 등록 동적 등록으로 등록하는 방송 수신기는 자유롭게 제어하고 취소할 수 있어 매우 유연성이 있다. 단점은 프로그램이 켜진 후에 정적 등록이 상반된다는 것이다.androidmanifest에서 Export 속성은 이 방송 수신기가 프로그램 이외의 방송을 받아들일 수 있는지를 표시하고, Enable 속성은 이 방송 수신기의 방송 수신기를 사용할 수 있는지 여부를 표시한다. 홈페이지 BrocastReceiver: onReceiver () 방법에 너무 많은 논리를 추가하거나 시간을 소모하는 작업을 하지 마라. 왜냐하면 방송 수신기는 라인을 열 수 없기 때문이다.onReceiver () 방법이 오래 실행되고 끝나지 않을 때 프로그램이 오류를 보고합니다.그래서 라디오 수신기는 다른 구성 요소만 켜는 역할이 더 많아요.
우리는 안드로이드 시스템의 방송은 전역 방송에 속하고 다른 응용 프로그램에 의해 감청될 수 있다고 말했는데 만약에 우리가 정의한 방송도 다른 프로그램에 의해 감청될 수 있다면 안전 문제를 일으키기 쉽다.여기서 이 문제를 해결하기 위해 우리는 로컬 방송, 안드로이드 로컬 방송 메커니즘을 사용할 수 있다. 보내는 방송은 본 응용 프로그램에서만 전파되고 수신기는 본 프로그램 내의 방송만 받아들일 수 있다.
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance( this ) ;
       
LocalBroadcastManager.registerReceiver( broadcastReceiver , intentFilter );

    
LocalBroadcastManager.sendBroadcast( intent ) ;

         
LocalBroadcastManager.unregisterReceiver( broadcastReceiver );

로컬 방송이 정적 등록을 할 수 없다는 것도 이해할 수 있다. 정적 등록은 주로 프로그램이 시작되지 않은 상황에서도 방송을 받을 수 있도록 하는 것이고 로컬 방송이 발송될 때 프로그램은 이미 시작되었을 것이다.장점: 1 전송된 방송은 자신의 앱 안에서만 전파되고 다른 앱에 유출되지 않으며 프라이버시 데이터가 유출되지 않도록 한다. 2 다른 앱도 당신의 앱에 이 방송을 전송하지 못한다. 다른 앱이 파괴될 염려가 없다. 3 시스템 전역 방송보다 더욱 효율적이다.
방송 실천 강제 하선
public class ActivityCollector { public static List sActivityList=new ArrayList<>();
public static void AddActivity(Activity activity) {
   sActivityList.add(activity);
}

public static void removeActivity(Activity activity) {
    sActivityList.remove(activity);
}

public static void FinishAll() {
    for (Activity activity : sActivityList) {
        if (!activity.isFinishing()) {
            activity.finish();
        }
    }
}

}
메인 인터페이스에서 강제 퇴출이 필요한 곳으로 가서 방송을 보내고 베이스 Activity에서 방송을 등록하고 방송을 취소하고 이 방송 수용자의 onreciver 방법에서Activity Collector를 한다.finishAll () 는 돌아가야 할 인터페이스를 다시 시작합니다. 일반적으로 인터페이스에 로그인합니다.

좋은 웹페이지 즐겨찾기