기기를 켜진 상태로 유지하기 위한 적절한 API 선택

사용자가 Android 기반 기기를 유휴 상태로 두면 배터리 소모를 방지하기 위해 기기가 빠르게 절전 모드로 전환됩니다. 하지만 앱이 CPU가 일시 중지 상태로 전환되지 않도록 해야 하는 경우도 있습니다. 앱이 작동하는 동안 화면을 켜진 상태로 유지해야 하는 경우도 있습니다. 다른 경우에는 앱이 화면을 켜진 상태로 유지할 필요는 없지만 CPU가 활성 상태여야 합니다.

이를 위해 취하는 접근 방식은 앱의 필요에 따라 다릅니다. 하지만 일반적인 규칙은 앱이 시스템 리소스에 미치는 영향을 최소화할 수 있는 가능한 한 가장 가벼운 방식을 사용하는 것입니다. 이 문서는 상황에 적합한 Android 기술을 선택하는 데 도움이 됩니다.

적절한 기술 선택

기기를 절전 모드로 전환하지 않는 가장 좋은 옵션은 앱의 요구사항에 따라 다릅니다. 이 섹션에서는 적절한 접근 방식을 선택하는 방법을 설명합니다.

기기를 절전 모드로 전환하지 않기 위한 적절한 접근 방식을 선택하는 방법을 요약한 플로우 차트 플로우 차트의 내용은 다음 텍스트에서 자세히 설명합니다.

  • 앱에서 화면을 계속 켜야 하나요?
    • 인 경우 화면을 계속 켜기를 참고하세요. 필요한 작업을 실행하는 특수 목적 API가 있을 수 있습니다. 예를 들어 전화 통화 UI를 구현하는 경우 필요할 때 화면을 켜진 상태로 유지하는 Android 통신 프레임워크를 사용할 수 있습니다. 상황에 맞는 특수 목적 API가 없는 경우 keepScreenOn API를 사용할 수 있습니다.
  • 앱이 포그라운드 서비스를 실행하고 서비스가 실행되는 동안 화면이 꺼져 있을 때 기기를 절전 모드로 전환하지 않아야 하나요?
    • 아니요인 경우 기기를 절전 모드로 전환해도 됩니다. 사용자가 앱과 활발하게 상호작용하는 경우 기기는 절전 모드로 전환되지 않습니다. 사용자가 앱과 상호작용하지 않고 포그라운드 서비스를 실행하지 않는 경우 필요한 경우 기기가 정지 모드로 전환되도록 해야 합니다. 사용자가 앱을 사용하지 않는 동안 일부 작업을 완료해야 하는 경우 백그라운드 작업 문서를 참고하여 최적의 옵션을 찾아보세요.
    • 인 경우 먼저 포그라운드 서비스를 실제로 사용해야 하는지 확인합니다. 상황에 따라 포그라운드 서비스 대신 요구사항을 충족하는 데 사용할 수 있는 특수 목적 API가 있을 수 있습니다. 이러한 내용은 포그라운드 서비스 문서에서 확인할 수 있습니다. 예를 들어 사용자의 위치를 추적해야 하는 경우 location 포그라운드 서비스 대신 지오펜싱 API를 사용할 수 있습니다.
  • 포그라운드 서비스가 실행되고 기기 화면이 꺼져 있는 동안 기기가 절전 모드로 전환되면 사용자 환경에 해로운가요? (예를 들어 포그라운드 서비스를 사용하여 알림을 업데이트하는 경우 기기가 일시 중지되어도 나쁜 사용자 환경이 아닙니다.)
    • 아니요인 경우 wake lock을 사용하지 않습니다. 사용자가 기기를 사용하면 기기가 정지 상태에서 벗어나므로 작업이 자동으로 재개됩니다.
    • 인 경우 wake lock을 사용해야 할 수 있습니다. 하지만 기기를 절전 모드로 전환하지 않는 작업에 설명된 대로 이미 API를 사용하고 있거나 사용자를 대신하여 절전 모드 해제를 선언하는 작업을 하고 있는지 확인해야 합니다.

기기를 켜진 상태로 유지하는 작업

앱이 다음 중 하나를 실행하는 경우 wake lock을 직접 설정할 필요가 없습니다. 다음 작업과 API는 모두 기기를 절전 모드로 전환하지 않습니다.

  • 오디오를 재생하는 경우 오디오 시스템이 절전 모드 해제 잠금을 설정하고 관리하므로 직접 설정하지 않아도 됩니다.
  • WorkManager, JobScheduler, DownloadManager와 같은 작업 예약 API 또는 라이브러리를 사용하는 경우 시스템 또는 라이브러리에서 앱에 기여한 절전 모드 해제 잠금을 획득합니다.
  • Media3 ExoPlayer를 사용하는 경우 ExoPlayer.setWakeMode()를 사용하여 플레이어가 절전 모드 해제 잠금을 설정하도록 할 수 있습니다.
  • 특정 기기 센서는 절전 모드 해제 센서입니다. SensorManager를 사용하여 보고할 데이터가 있을 때 이러한 센서가 기기의 절전 모드를 해제하도록 할 수 있습니다. 센서가 절전 모드 해제 센서인지 확인하려면 Sensor.isWakeUpSensor를 호출합니다.
  • 알람을 예약하면 앱이 실행되고 있지 않더라도 알람이 울릴 때 기기가 절전 모드에서 해제됩니다.

참고 항목