Android App/Kotlin

4대 컴포넌트-서비스(Service), 실행방식(스타티드, 바운드, 포어그라운드 서비스)

AppJinny 2022. 12. 2. 11:45

*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 에서 발췌하였습니다.