page.title=연결 상태 확인 및 모니터링
parent.title=배터리 수명 최적화
parent.link=index.html

trainingnavtop=true

previous.title=도킹 상태와 유형 확인 및 모니터링
previous.link=docking-monitoring.html
next.title=온디맨드로 브로드캐스트 수신기 조작
next.link=manifest-receivers.html

@jd:body

<div id="tb-wrapper"> 
<div id="tb">

<h2>강의 목표</h2>
<ol>
  <li><a href="#DetermineConnection">인터넷에 연결되어 있는지 확인</a></li>
  <li><a href="#DetermineType">인터넷 연결 유형 확인</a></li>
  <li><a href="#MonitorChanges">연결 변경사항 모니터링</a></li>
</ol>


<h2>참고자료</h2>
<ul>
  <li><a href="{@docRoot}guide/components/intents-filters.html">인텐트 및 인텐트 필터</a>
</ul>

</div> 
</div>

<p>반복 알람과 백그라운드 서비스는 일반적으로 인터넷 리소스 및 캐시 데이터로부터 애플리케이션의 업데이트를 예약하거나 긴 시간이 필요한 다운로드를 실행하는 데 사용됩니다. 하지만 인터넷에 연결되어 있지 않거나 연결이 매우 느려 다운로드를 완료하지 못한다면 업데이트 예약을 해도 소용이 없겠죠?</p>

<p>인터넷에 연결되었는지, 어떤 연결 방식인지를 확인하기 위하여 {@link android.net.ConnectivityManager}를 사용할 수 있습니다.</p>


<h2 id="DetermineConnection">인터넷에 연결되어 있는지 확인</h2> 
 
<p>인터넷에 연결되어 있지 않는 경우 인터넷 리소스를 기반으로 한 업데이트 예약을 할 필요가 없습니다. 다음은 활성 네트워크를 쿼리하고 인터넷이 연결되어 있는지 확인하기 위한 {@link android.net.ConnectivityManager} 사용법을 보여줍니다.</p>

<pre>ConnectivityManager cm =
        (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
 
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork.isConnectedOrConnecting();</pre>


<h2 id="DetermineType">인터넷 연결 유형 확인</h2> 

<p>현재 사용할 수 있는 인터넷 연결 유형을 확인할 수도 있습니다.</p>

<p>연결은 모바일 데이터, WiMAZ, Wi-Fi 및 이더넷 연결을 통해 제공될 수 있습니다. 아래와 같이 활성 네트워크의 유형을 쿼리하면, 사용 가능한 대역폭에 따라 업데이트 빈도를 변경할 수 있습니다.</p>

<pre>boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;</pre>

<p>모바일 데이터 비용은 Wi-Fi보다 높은 경향이 있으므로, 모바일 연결인 경우 앱의 업데이트 빈도를 줄여야 합니다. 마찬가지로 Wi-Fi로 연결되기까지 큰 용량의 다운로드는 일시 중지해야 합니다.</p>

<p>업데이트를 비활성화한 경우, 인터넷 연결이 재개되면 업데이트를 다시 시작하기 위해 연결 변경사항을 알고 있는 것이 중요합니다.</p>


<h2 id="MonitorChanges">연결 변경사항 모니터링</h2> 

<p>연결 정보가 변경될 때마다 {@link android.net.ConnectivityManager}는 {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}({@code "android.net.conn.CONNECTIVITY_CHANGE"}) 액션을 브로드캐스트합니다. 변경사항을 수신하거나 적절히 백그라운드 업데이트를 다시 시작 또는 일시 중지하기 위해 매니페스트에서 브로드캐스트 리시버를 등록할 수 있습니다.</p>

<pre>&lt;action android:name="android.net.conn.CONNECTIVITY_CHANGE"/></pre>

<p>연결 정보는 수시로 변경될 수 있습니다. 모바일과 Wi-Fi 간에 이동할 때마다 브로드캐스트가 실행됩니다. 따라서 업데이트나 다운로드를 일시 중지한 경우에만 브로드캐스트를 확인하는 것이 좋습니다. 업데이트를 시작하기 전이나 이전에 업데이트를 일시 중지했던 경우에만 확인하는 것으로 충분합니다.</p>

<p>이 기술은 다음 강의에서 설명하는 매니페스트에서 선언한 브로드캐스트 리시버의 전환이 필요합니다.</p>
