암시적 브로드캐스트 예외

kosdjs·2025년 6월 29일
0

Android

목록 보기
13/24
  • 안드로이드 8(API 레벨 26)이상을 타겟팅하는 앱은 브로드캐스트가 특별히 이 앱에만 전송되는 경우 외에는 암시적 브로드캐스트를 받는 브로드캐스트 리시버를 매니페스트에 등록할 수 없음, 하지만 몇몇의 브로드캐스트는 이 제한에서 예외됨, 타겟팅하는 API 레벨과 상관 없이 다음 브로드캐스트들을 수신하는 브로드캐스트 리시버는 등록이 가능함

노트: 이 암시적 브로드캐스트들이 아직 백그라운드에서 동작하더라도 해당 브로드캐스트를 수신하는 브로드캐스트 리시버를 등록하는 것을 피하세요.

ACTION_LOCKED_BOOT_COMPLETED, ACTION_BOOT_COMPLETED

  • 이 브로드캐스트들은 부팅할 때 한 번 전송되고, 작업이나 알람을 예약하는 많은 앱들이 이 브로드캐스트를 수신해야 하기 때문에 예외로 지정됨

ACTION_USER_INITIALIZE, android.intent.action.USER_ADDED, android.intent.action.USER_REMOVED

  • 높은 권한이 이 브로드캐스트들을 지키고 있기 때문에 일반 앱은 수신하지 못하므로 예외로 지정됨

android.intent.action.TIME_SET, ACTION_TIMEZONE_CHANGED, ACTION_NEXT_ALARM_CLOCK_CHANGED

  • 시계 앱이 시간, 시간대 또는 알람이 변경되었을 때 이런 브로드캐스트들 수신해야 하기 때문에 예외로 지정됨

ACTION_LOCALE_CHANGED

  • 이 브로드캐스트는 언어가 변경되었을때만 전송되며 이는 자주 일어나지 않고, 앱이 이 브로드캐스트를 수신해 언어가 변경되었을 때 정보를 변경해야 할 수 있으므로 예외로 지정됨

ACTION_USB_ACCESSORY_ATTACHED, ACTION_USB_ACCESSORY_DETACHED, ACTION_USB_DEVICE_ATTACHED, ACTION_USB_DEVICE_DETACHED

  • 앱이 USB 관련 이벤트에 대해 알아야 할 때 브로드캐스트를 전송받는 것 외에 대안이 없어서 예외로 지정됨

BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED, BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED, ACTION_ACL_CONNECTED, ACTION_ACL_DISCONNECTED

  • 앱이 이 블루투스 이벤트 관련 브로드캐스트를 수신해 처리하지 않으면 사용자 경험이 나빠질 수 있기 때문에 예외로 지정됨

ACTION_CARRIER_CONFIG_CHANGED, TelephonyIntents.ACTION_*_SUBSCRIPTION_CHANGED, TelephonyIntents.SECRET_CODE_ACTION, ACTION_PHONE_STATE_CHANGED, ACTION_PHONE_ACCOUNT_REGISTERED, ACTION_PHONE_ACCOUNT_UNREGISTERED

  • 전화 앱이 이런 브로드캐스트들을 수신해야 하므로 예외로 지정됨

LOGIN_ACCOUNTS_CHANGED_ACTION

  • 일부 앱이 새 계정 또는 변경된 계정을 위해 작업을 하기 위해 로그인 정보 변경점을 알아야 할 수 있으므로 예외로 지정됨

ACTION_ACCOUNT_REMOVED

  • 계정을 볼 수 있는 앱이 계정이 삭제될 때 수신하는 브로드캐스트, 만약 이 상황이 앱이 계정 변경에 대해 처리해야 할 유일한 상황이라면 지원 중단된 LOGIN_ACCOUNTS_CHANGED_ACTION 대신 이 브로드캐스트를 사용하기를 권장함, 위 브로드캐스트와 동일한 이유로 예외로 지정됨

ACTION_PACKAGE_DATA_CLEARED

  • 사용자가 설정에서 데이터를 삭제했을때만 전송되는 브로드캐스트로 브로드캐스트가 사용자 경험에 영향을 주지 않을 것으로 예상되기 때문에 예외로 지정됨

ACTION_PACKAGE_DATA_CLEARED

  • 일부 앱은 다른 패키지가 삭제되었을 때 저장된 데이터를 수정해야할 수 있고 이럴 때 브로드캐스트를 수신하는 것 외에 다른 좋은 대안이 없기 때문에 예외로 지정됨

노트: ACTION_PACKAGE_REPLACED와 같은 다른 패키지와 관련된 브로드캐스트는 백그라운드 실행 제한에서 예외되지 않습니다. 이런 브로드캐스트들은 흔히 발생하므로 예외되었을 때 성능에 영향을 끼칠 가능성이 있기 때문입니다.

ACTION_NEW_OUTGOING_CALL

  • 사용자가 전화를 걸었을 때 행동을 취해야하는 앱은 이 브로드캐스트를 수신해야하기 때문에 예외로 지정됨

ACTION_DEVICE_OWNER_CHANGED

  • 이 브로드캐스트는 자주 전송되지 않으며, 기기의 보안 상태를 변경하기 위해 일부 앱이 이 브로드캐스트를 수신해야 하기 때문에 예외로 지정됨

ACTION_EVENT_REMINDER

  • 캘린더 제공자가 일정 알림을 캘린더 앱에 전송하기 위한 브로드캐스트이고, 캘린더 제공자가 어떤 앱이 캘린더 앱인지 모르기 때문에 이 브로드캐스트가 암시적이어야 하므로 예외로 지정됨

ACTION_MEDIA_MOUNTED, ACTION_MEDIA_CHECKING, ACTION_MEDIA_UNMOUNTED, ACTION_MEDIA_EJECT, ACTION_MEDIA_UNMOUNTABLE, ACTION_MEDIA_REMOVED, ACTION_MEDIA_BAD_REMOVAL

  • 이 브로드캐스트들은 사용자가 저장소 볼륨을 설치하거나 제거할 때와 같이 기기와 물리적 상호작용을 할 때의 결과로 전송되거나 사용 가능한 볼륨이 마운트 되는 부팅 초기화의 일환으로 전송되고, 이는 자주 일어나는 일이 아니고 사용자의 제어에 있는 상황이기 때문에 예외로 지정됨

SMS_RECEIVED_ACTION, WAP_PUSH_RECEIVED_ACTION

  • SMS를 수신하는 앱은 이런 브로드캐스트들에 의존하기 때문에 예외로 지정됨

원문: https://developer.android.com/develop/background-work/background-tasks/broadcasts/broadcast-exceptions

0개의 댓글