4대 컴포넌트-서비스(Service), 실행방식(스타티드, 바운드, 포어그라운드 서비스)
*4대 컴포넌트-서비스(Service)
-백그라운드 작업을 위한 컴포넌트, 화면이 없는 액티비티, 인텐트 사용
-기존의 백그라운드 처리와는 다른 개념
-실제로 서비스만으로 백그라운드(서브스레드)에서 동작하지 않고 메인 스레드 사용
-화면과 상관없이 장시간 동안 처리해야 하는 업무를 구현할 때 사용
-다른 앱이 사용자 화면을 점유하고 있어도 앱의 프로세스가 살아서 계속 작업을 수행해야 할 때 사용
-MP3플레이어나 채팅 앱 등에 적용
*4대 메이저 컴포넌트
-컴포넌트 : 안드로이드 앱을 구성하는 요소, 독립적인 생명주기에 의해 실행
-https://heeyjinny.tistory.com/61
*서비스(Service) 실행 방식
-시작방식 기준 : Started Service(스타티드 서비스), Bound Service(바운드 서비스)
-실행구조 기준 : Foreground Service(포어그라운드 서비스), 백그라운드 서비스(스타티드 서비스, 바운드 서비스)
--(서비스에서의 백그라운드는 화면에 나타나지 않는다는 의미, 백그라운드 스레드와는 다른 개념)
*Started Service(스타티드 서비스)
-액티비티와 상관없이 독립적으로 동작할 때 사용, 일반적으로 많이 사용
-스타티드 서비스가 이미 동작중인 상태에서 재시작을 요청할 경우 새로 만들지 않고 생성되어 있는 서비스의 메서드 호출
-startService() 메서드로 호출
*Bound Service(바운드 서비스)
-액티비티와 값을 주고받을 필요가 있을 때 사용, 특별한 경우 제외 잘 사용하지 않음
-값을 주고받기 위한 인터페이스 제공, 연결된 액티비티가 종료되면 서비스도 같이 종료됨
-액티비티 화면이 떠 있는 상태에서 백그라운드 처리를 할 경우 스타티드 서비스보다 효율적임
-여러 개의 액티비티가 같은 서비스를 사용할 수 있기 때문에 기존에 생성되어있는 서비스를 재사용할 수 있음
-bindService() 메서드로 호출
*Foreground Service(포어그라운드 서비스)
-사용자에게 알림을 통해 현재 작업이 진행 중이라는 것을 알려줌
-사용자가 알림을 통해 서비스가 동작하고 있다는 것을 인지하여 가용 자원 부족과 같은 이유로는 종료되지 않음
-서비스를 먼저 생성 후 시스템에 포어그라운드로 사용된다는 것을 알려줘야 함
-실행구조를 기준으로 포어그라운드와 백그라운드 서비스로 분류
-기본적으로 서비스는 모두 백그라운드 서비스(화면에 나타나지 않는 서비스를 뜻함 : 스타티드서비스, 바운드서비스)
-포어그라운드 서비스 3단계
--포어그라운드 서비스 권한 명세
--서비스의 선행
--서비스 안에서 startForeground() 메서드 호출하여 서비스가 포어그라운드로 실행되고 있음을 안드로이드에게 알림
이 포스팅에 작성한 내용은 고돈호, ⌜이것이 안드로이드다⌟, 한빛미디어(주), 2022 에서 발췌하였습니다.