[Android] ConnectivityManager로 데이터 절약 모드 감지하기

2026. 1. 6. 20:49·작업 일지
반응형

운영 중인 앱의 기능으로 오전 08:00가 되면 WorkManager를 통해 고객에게 문자를 전송하고 있다. 만약 문자 전송에 실패할 경우 에러 내역을 파일로 저장하고, 미전송 내역을 남겨 수동으로 전송할 수 있다.

 

stackTrace: java.net.ConnectException: Failed to connect to ...

어느 날 '예약 문자 전송이 며칠 동안 안 돼서 수동으로 계속 보내고 있다.'는 내용으로 문의가 들어왔다. 에러 내역을 확인해 보니 위와 같은 문구를 확인할 수 있었다.

 

이 문구는 서버와의 연결에 실패했다는 내용으로 순간적으로 서버가 다운이 되었을까 생각이 들었지만 며칠 동안 동일 시간에 다운이 발생했을 거 같지는 않고, 다른 고객에게서 정상적으로 전송된 로그가 보였다. 특히나 전송 실패 로그가 08:00에 찍히고서 재전송 로그가 1분 내외로 찍힌 것이 이상하다고 느껴 다른 원인을 찾아봤다.

 

기기 자체에서 서버를 차단하는 경우가 무엇이 있는지 찾아보던 중, '데이터 절약 모드'일 때 백그라운드에서 네트워크를 차단한다는 내용을 봤다. 수동 전송의 경우 사용자가 앱 내에서 직접 처리를 하는 포그라운드 상태라서 문제 상황이 일치했다. 아니나 다를까 사용자분은 데이터 절약 모드를 활성화한 상태였고, 비활성화를 요청드린 다음 날 정상적으로 문자 전송이 된 것을 확인했다.


데이터 절약 모드 체크하기

    /**
     * 데이터 절약 모드 체크
     */
    fun checkMobileDataSaveMode(context: Context): Boolean {
        val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        val status = ConnectivityManagerCompat.getRestrictBackgroundStatus(cm)
        return status == ConnectivityManagerCompat.RESTRICT_BACKGROUND_STATUS_ENABLED
    }

데이터 절약 모드를 체크하는 방법은 간단하다. ConnectivityManager를 사용하면 현재 기기가 데이터 절약 모드인지 확인할 수 있다. WorkManager의 doWork() 블록에서 네트워크를 요청하기 전에 해당 함수를 호출하여 데이터 절약 모드가 활성화된 경우 상태 알림을 띄워 사용자가 어떤 사유로 전송에 실패했는지 알 수 있게 처리했다.

반응형

'작업 일지' 카테고리의 다른 글

[Android] API의 배치 처리와 동시성 처리 : chunked vs semaphore  (1) 2025.12.19
[Android] WebView에서 다운로드 동작이 안 되는 이유  (0) 2025.09.17
[Android] 배송 순서 최적화하기 with TSP  (2) 2025.07.01
[Android][Compose] MaterialCalendarView를 Compose에서 사용하기  (0) 2024.05.19
[Android] 내비게이션의 다음 경로 정보 구하기#2  (0) 2024.03.07
'작업 일지' 카테고리의 다른 글
  • [Android] API의 배치 처리와 동시성 처리 : chunked vs semaphore
  • [Android] WebView에서 다운로드 동작이 안 되는 이유
  • [Android] 배송 순서 최적화하기 with TSP
  • [Android][Compose] MaterialCalendarView를 Compose에서 사용하기
O_Gyong
O_Gyong
안드로이드 기술 정리
  • O_Gyong
    O_Gyong's TECH
    O_Gyong
    • 분류 전체보기 (83)
      • Android (60)
        • ADB (4)
        • Architecture (1)
        • Data (5)
        • Firebase (2)
        • Network & Connecting (4)
        • Security & Privacy (3)
        • UI (24)
        • 기타 (3)
        • 이슈 처리 (14)
      • Android Studio (5)
      • Git (3)
      • 작업 일지 (15)
  • 최근 글

  • 인기 글

  • 태그

    Navigation
    MQTT
    Andoird
    Paging3
    해상도
    compose
    hilt
    Android
    github
    Room
    Pagination
    TabLayout
    flow
    Kotlin
    CameraX
    paging
    recyclerview
    Bluetooth
    issue
    Android Studio
    GIT
    SharedPreferences
    in-app update
    firebase
    BLE
    kizitonwose
    loading
    ADB
    webview
    CalendarView
  • 링크

    • GitHub
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • hELLO· Designed By정상우.v4.10.4
O_Gyong
[Android] ConnectivityManager로 데이터 절약 모드 감지하기
상단으로

티스토리툴바