이제 Android 11 개발자 프리뷰를 사용할 수 있습니다. 테스트해 보고 의견을 공유하세요.

연결 상태 확인 및 모니터링

반복적인 알람과 백그라운드 서비스를 사용하는 가장 일반적인 방법은 인터넷 리소스의 애플리케이션 데이터 정기 업데이트를 예약하거나, 데이터를 캐싱하거나, 오래 진행되는 다운로드를 실행하는 것입니다. 하지만 인터넷에 연결되어 있지 않거나 연결 속도가 너무 느려서 다운로드를 완료할 수 없는 경우에는 기기의 절전 모드를 해제하여 업데이트를 예약할 필요가 없습니다.

ConnectivityManager를 사용하면 인터넷에 실제로 연결되어 있는지, 연결되어 있다면 어떤 유형의 연결이 설정되어 있는지를 확인할 수 있습니다.

인터넷 연결이 설정되어 있는지 확인

인터넷에 연결되어 있지 않으면 인터넷 리소스 기반의 업데이트를 예약할 필요가 없습니다. 다음 코드 스니펫은 ConnectivityManager를 사용하여 활성 네트워크를 쿼리하고 인터넷 연결이 설정되어 있는지 확인하는 방법을 보여줍니다.

Kotlin

    val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
    val activeNetwork: NetworkInfo? = cm.activeNetworkInfo
    val isConnected: Boolean = activeNetwork?.isConnectedOrConnecting == true
    

자바

    ConnectivityManager cm =
            (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    boolean isConnected = activeNetwork != null &&
                          activeNetwork.isConnectedOrConnecting();
    

인터넷 연결 유형 확인

현재 사용 가능한 인터넷 연결 유형을 확인할 수도 있습니다.

기기 연결은 모바일 데이터, WiMAX, Wi-Fi 및 이더넷 연결로 제공될 수 있습니다. 아래와 같이 활성 네트워크 유형을 쿼리하여 사용 가능한 대역폭 기반의 새로고침 비율을 변경할 수 있습니다.

Kotlin

    val isWiFi: Boolean = activeNetwork?.type == ConnectivityManager.TYPE_WIFI
    

자바

    boolean isWiFi = activeNetwork.getType() == ConnectivityManager.TYPE_WIFI;
    

모바일 데이터 비용은 Wi-Fi보다 상당히 높으므로, 대부분 앱의 업데이트 비율이 모바일 연결에서 더 낮아야 합니다. 마찬가지로 큰 용량의 다운로드는 Wi-Fi에 연결될 때까지 정지되어야 합니다.

업데이트를 사용 안함으로 설정한 뒤에는 연결이 변경되는지 수신 대기하고 있다가 인터넷 연결이 설정되면 업데이트를 재개해야 합니다.

연결 변경 모니터링

Android 7.0(API 레벨 24) 이상을 타겟팅하는 앱은 manifest에서 broadcast receiver를 선언하는 경우 CONNECTIVITY_ACTION 브로드캐스트를 수신하지 않습니다. 앱이 Context.registerReceiver()BroadcastReceiver를 등록하고 이 환경설정이 여전히 유효한 경우에는 CONNECTIVITY_ACTION 브로드캐스트를 계속 수신합니다.