15-3 백그라운드 제약

StrayCat·2022년 12월 10일
0

리시버의 백그라운드 제약

  • 매니페스트에 등록한 리시버암시적으로 실행할 때는 같은 앱의 리시버든 외부 앱의 리시버든 실행되지 않는다.

서비스의 백그라운드 제약

  • 앱이 백그라운드 상태일 때 인텐트를 전달하면 오류가 발생한다.

  • 서비스가 정상으로 실행되는 포그라운드 상황

    • 액티비티가 시작되든 일시 중지되든 상관없이 보이는 액티비티가 있을 때
    • 포그라운드 서비스가 있을 때
    • 앱의 서비스에 바인딩하거나 앱의 콘텐츠 프로바이더를 사용해 또 다른 포그라운드 앱이 연결되었을 때
  • 백그라운드여도 정상 실행 되는 경우

    • 우선순위가 높은 파이어베이스 클라우드 메시징 처리
    • SMS/MMS 메시지와 같은 브로드 캐스트 수신
    • 알림에서 PendingIntent 실행
    • VPN 앱이 포그라운드로 승격되기 전에 VpnService 시작
  • 강제로 실행하는 방법

    • startForegroundService() 함수로 인텐트를 실행하면 된다.
    • 이 방법으로 실행 된 서비스는 일정 시간 이후 강제 종료되므로, 종료되기전 startForeground() 함수를 호출하여 포그라운드 상황으로 만들어야한다.
        val notification = builder.build()
        startForeground(1, notification)

0개의 댓글