blob: c5c311b75f6bd3e80daa7a6ce7322f0ef963a8e7 [file] [log] [blame]
page.title=온디맨드로 브로드캐스트 수신기 조작
parent.title=배터리 수명 최적화
parent.link=index.html
trainingnavtop=true
previous.title=연결 상태 확인 모니터링
previous.link=connectivity-monitoring.html
@jd:body
<div id="tb-wrapper">
<div id="tb">
<h2>강의 목표</h2>
<ol>
<li><a href="#ToggleReceivers">효율성 향상을 위한 상태 변화 리시버의 전환 단계적 연결</a></li>
</ol>
<h2>참고자료</h2>
<ul>
<li><a href="{@docRoot}guide/components/intents-filters.html">인텐트 인텐트 필터</a>
</ul>
</div>
</div>
<p>기기 상태 변경을 모니터링하는 가장 간단한 방법은 모니터링하는 상태에 대해 {@link android.content.BroadcastReceiver}를 만들어 각각을 애플리케이션 매니페스트에 등록하는 것입니다. 그러면 리시버 내에서 현재 기기 상태를 기반으로 반복 알람의 일정을 간단히 변경할 있습니다.</p>
<p> 방법의 부작용은 리시버 하나라도 실행되면 매번 앱이 기기의 절전 모드를 해제시킨다는 것입니다.</p>
<p> 나은 방법은 런타임 브로드캐스트 리시버를 사용 중지 또는 사용하도록 설정하는 것입니다. 이렇게 하면 매니페스트에 선언한 리시버를 필요할 때만 시스템 이벤트에 의해 실행되는 수동적인 알람으로 사용할 있습니다.</p>
<h2 id="ToggleReceivers">효율성 향상을 위한 상태 변화 수신기의 전환 단계적 연결 </h2>
<p>{@link android.content.pm.PackageManager}를 사용하여 아래에서 표시된 대로 모든 사용 또는 사용 중지하기 원하는 브로드캐스트 리시버를 포함하여 매니페스트 내에 정의된 모든 요소의 사용 가능 상태를 전환할 있습니다.</p>
<pre>ComponentName receiver = new ComponentName(context, myReceiver.class);
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP)</pre>
<p> 방법을 사용하면 연결이 없음을 확인한 경우 연결 변경 리시버를 제외한 모든 리시버를 사용 중지할 있습니다. 반대로 연결되면 연결 변경사항의 수신을 중지할 있으며, 업데이트를 수행하고 반복 업데이트 알람의 일정을 변경하기 전에 온라인 상태인지만 간단히 확인할 있습니다.</p>
<p>높은 대역폭을 요구하는 다운로드를 중지시키는 동일한 기술을 사용할 있습니다. 연결 변경을 수신하는 브로드캐스트 리시버를 사용하도록 설정하고 반드시 Wi-Fi 연결한 후에 다운로드를 시작하도록 합니다.</p>