[TIL] #15 Types of Services

Yeon·2023년 8월 3일
0

내일배움캠프 - Kotlin

목록 보기
19/58
post-thumbnail

📚 Types of Services

  • Started Service: Foreground, Background
  • BoundService: Bound

1. Foreground

  • 안드로이드 앱의 실행 중에 사용자와 직접적으로 상호작용할 수 있는 상태
    • 사용자가 앱을 실행하고 앱의 화면이 보이는 상태
  • 사용자는 앱과의 상호작용을 통해 앱의 기능을 사용하고 데이터를 입력하거나 출력할 수 있음
  • ex. 안드로이드의 Notification을 사용하여 다운로드가 되는 상황을 알림에 progress와 함께 보여주거나 음악앱의 현재 플레이백 상태를 알림과 함께 업데이트 해주곤 합

2. Background

  • 포그라운드가 아닌 상태로, 앱이 백그라운드에 있을 때는 사용자와 직접적으로 상호작용할 수 없음
  • 백그라운드에서도 앱이 일부 동작을 수행할 수 있음
    • ex. 백그라운드에서 푸시 알림을 수신하거나 데이터를 업데이트하는 등의 작업을 할 수 있음
  • 백그라운드에서 실행되지만 유저에게 특별히 진행상황이나 결과에 대한 메세지를 전달할 필요가 없는 경우에 쓰임
  • API26부터는 백그라운드 서비에서 여러가지 제약이 걸림
    • 백그라운드에서 돌고있는 앱이 시스템의 리소스를 많이 잡아먹으면 유저가 다른 앱을 사용하고 있을 때도 좋지못한 사용자 경험을 제공할 수 있기 때문
    • 그렇기 때문에 Background Service를 사용할 수 있는(굳이 사용할 필요가 없어서) 영역이 더욱 줄어들었음

3. Bound

  • 안드로이드에서 서비스와 액티비티 간에 바인딩을 통해 서로 상호작용하는 방식
  • 액티비티와 특정 서비스를 연결하여 서비스의 메서드를 호출하거나 데이터를 주고받을 수 있게 함
  • 액티비티가 소멸되면 함께 소멸되는 것이 일반적!
    • 액티비티와 바인딩된 서비스는 서로 생명 주기를 공유하게 됨

➕ Stages of Bound Service

1) 서비스 생성 및 바인딩

  • 액티비티에서 서비스를 생성하고 바인딩하는 작업을 수행함
  • 서비스와 액티비티가 서로를 인식하고 연결됨

2) 바인딩 확인

  • 서비스가 바인딩되면, 서비스의 Binder 객체를 통해 액티비티에서 서비스의 메서드를 호출할 수 있음
  • 이를 통해 액티비티와 서비스가 서로 상호작용할 수 있게 됨

3) 작업 수행

  • 액티비티에서 바인딩된 서비스의 메서드를 호출하여 원하는 작업을 수행하고, 결과를 받아올 수 있음
  • ex. 음악 앱에서 음악 재생을 제어하거나, 데이터베이스 작업을 수행하는 등의 작업이 가능함

4) 바인딩 해제

  • 작업이 완료되면, 액티비티에서 서비스와의 바인딩을 해제해야 함
  • 이렇게 하면 더 이상 서비스와의 상호작용이 이루어지지 않음



[참고 사이트]

'안드로이드, 어디까지 아세요 [2.1] — background task, Service, Foreground Service', Medium
'Services overview', developer

0개의 댓글