Register now for Android Dev Summit 2019!

필요 시 브로드캐스트 수신기 조작

기기 상태 변화를 모니터링하는 가장 간단한 방법은 모니터링하는 각 상태에 BroadcastReceiver를 생성하고 애플리케이션 매니페스트에서 각각을 등록하는 것입니다. 이 수신기 각각에서 현재 기기 상태에 따라 반복되는 알람을 재예약하면 됩니다.

이 방법의 부작용은 이 수신기가 트리거될 때마다 기기를 깨워서 필요 이상으로 자주 기기를 깨울 가능성이 있다는 것입니다.

런타임에서 브로드캐스트 수신기를 비활성화하거나 활성화하는 것이 좋습니다. 이 방법은 매니페스트에서 선언한 수신기를 필요할 때만 시스템 이벤트가 트리거하는 수동 알람으로 사용할 수 있습니다.

상태 변경 수신기를 전환, 종속시켜서 효율 개선

아래 스니펫과 같이 PackageManager를 통해 활성화/비활성화하고자 하는 브로드캐스트 수신기를 포함하여 매니페스트에서 정의된 모든 구성 요소에서 활성화된 상태를 전환할 수 있습니다.

ComponentName receiver = new ComponentName(context, myReceiver.class);

PackageManager pm = context.getPackageManager();

pm.setComponentEnabledSetting(receiver,
        PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
        PackageManager.DONT_KILL_APP)

연결이 해제되었다는 것이 확인되면 이 기술을 사용하여 연결 상태 수신기를 제외한 모든 수신기를 비활성화할 수 있습니다. 반대로 연결된 상태에서는 연결 변화 수신 대기를 중단한 뒤에 업데이트를 수행하고 반복되는 업데이트 알람을 재예약하기 직전에 온라인 상태인지 확인하기만 하면 됩니다.

같은 기술을 사용하여 완료하는 데 대역폭이 더 많이 필요한 다운로드를 지연시킬 수 있습니다. 연결 변화를 수신 대기하는 브로드캐스트 수신기를 활성화하고 Wi-Fi에 연결된 뒤에만 다운로드를 시작하면 됩니다.