백그라운드에서 활동 시작에 관한 제한사항

Android 10 (API 수준 29) 이상에서는 앱이 백그라운드에서 실행될 때 앱이 활동을 시작할 수 있는 경우에 관한 제한사항 이러한 제한사항은 사용자의 방해를 최소화하고 사용자가 화면에 표시되는 내용을 더 잘 제어할 수 있도록 합니다.

이 가이드에서는 백그라운드에서 활동을 시작하기 위한 대안으로 알림을 제시합니다. 여기에는 제한사항이 적용되지 않는 구체적인 사례도 나열되어 있습니다.

알림으로 대신 표시

거의 모든 경우, 백그라운드 앱은 활동을 직접 시작하는 대신 사용자에게 긴급한 정보를 제공하기 위해 시간에 민감한 알림을 표시해야 합니다. 이러한 알림에는 수신 전화 또는 활성 알람 시계를 처리하는 것이 포함됩니다.

이 알림 기반 알림 및 리마인더 시스템은 사용자에게 다음과 같은 몇 가지 이점을 제공합니다.

  • 기기를 사용할 때 사용자가 응답할 수 있는 헤드업 알림이 표시됩니다. 사용자는 현재 컨텍스트를 유지하고 화면에 표시되는 콘텐츠를 제어할 수 있습니다.
  • 시간에 민감한 알림은 사용자의 방해 금지 모드 규칙을 따릅니다. 예를 들어 방해 금지 모드가 사용 설정된 경우 사용자는 특정 연락처 또는 반복 발신자의 전화만 허용할 수 있습니다.
  • 기기 화면이 꺼져 있으면 전체 화면 인텐트가 즉시 실행됩니다.
  • 기기의 설정 화면에서 사용자는 특정 알림 채널을 포함하여 최근에 알림을 보낸 앱을 확인할 수 있습니다. 이 화면에서 사용자는 알림 환경설정을 제어할 수 있습니다.

앱이 활동을 시작할 수 있는 경우

Android 10 이상에서 실행되는 앱은 다음 조건 중 하나 이상을 충족할 때 활동을 시작할 수 있습니다.

  • 앱에 가시적 창이 있을 경우(예: 포그라운드에서 실행되는 Activity).
  • 앱의 포그라운드 작업의 백 스택에 활동이 있습니다.
  • 앱의 최근 화면에서 기존 작업의 백 스택에 활동이 있습니다.

  • 앱에 아주 최근에 시작된 활동이 있습니다.

  • 앱이 매우 최근에 활동에 finish()를 호출했습니다. 이는 finish()가 호출될 때 앱의 포그라운드에 활동이 있거나 포그라운드 작업의 백 스택에 활동이 있는 경우에만 적용됩니다.

  • 앱에 시스템에 의해 바인딩된 다음 서비스 중 하나가 있습니다. 이러한 서비스는 UI를 시작해야 할 수도 있습니다.

  • 앱에 표시된 다른 앱에 의해 바인딩된 서비스가 있습니다. 서비스에 바인딩된 앱은 백그라운드에 있는 앱이 활동을 성공적으로 시작할 수 있도록 표시 상태로 유지되어야 합니다.

  • 앱이 시스템에서 알림 PendingIntent을 수신합니다. 서비스 및 broadcast receiver의 대기 중인 인텐트의 경우 앱은 대기 중인 인텐트가 전송된 후 몇 초 동안 활동을 시작할 수 있습니다.

  • 표시된 다른 앱에서 전송된 PendingIntent를 앱이 수신합니다.

  • 앱이 UI를 실행해야 하는 시스템 브로드캐스트를 수신하는 경우. 예를 들어 ACTION_NEW_OUTGOING_CALL, SECRET_CODE_ACTION를 들 수 있습니다. 브로드캐스트가 전송되고 몇 초 후에 앱이 Activity를 시작할 수 있습니다.

  • 앱이 CompanionDeviceManager API를 통해 호환 하드웨어 기기와 연결됩니다. 이 API를 사용하면 앱이 사용자가 페어링된 기기에서 실행하는 작업에 대한 응답으로 활동을 시작할 수 있습니다.

  • 앱이 기기 소유자 모드에서 실행되는 기기 정책 컨트롤러입니다. 사용 사례로는 완전 관리형 엔터프라이즈 기기 및 디지털 사이니지 및 키오스크와 같은 전용 기기가 있습니다.

  • 사용자가 앱에 SYSTEM_ALERT_WINDOW 권한을 부여합니다.