Service ?!

ABL·2022년 11월 16일
0
post-custom-banner

Service란

백그라운드에서 오랜 시간 수행되는 업무를 담당하기 위한 컴포넌트!
화면 출력 능력은 없음! (only background) , 다만 화면 반응성은 아예 없거나 드물게 발생하는 업무여야함 (activity는 반응성 있음!) // 화면에 다른 앱이 사용된다고 해도 계속 처리되어야 함

Manifest에 service 태그로 등록, name은 생략 불가능

startService(intent)에 의해서 실행
외부 앱의 서비스라면 setPackage()함수를 이용해 실행하고자 하는 앱의 패키지 명을 명시

4개 컴포넌트 중 유일하게 구동 뿐만 아니라 종료를 위한 인텐트 함수도 존재함!!
stopService(intent) // 유저에 의해서 종료할 수 없어성

Lifecycle

service 실행하는 방법 두가지 있음!
1. startService() ( onCreate()는 최초 한번만 호출, 인텐트가 다시 발생되면 onStartCommand()함수만 반복 호출이 되는 것 )

  1. bindService() ( 서비스 객체 생성, onCreate() 최초 한번만 호출 -> onBind() 반복 호출 -> onUnbind() 호출로 종료 )

공식문서 나와있음, 참고해서 비교해 볼 것!

-service는 싱글톤으로 동작함 (하나의 클래스가 단 하나의 개채로만 동작하는 구조)

싱글톤에 대해 이해해보자.. 액티비티랑 비교해보깅

어떤 activity 객체가 생성되어있는데, 똑같은 activity를 생성하기 위한 인텐트가 한번 더 발생되면 또 하나의 객체가 생성 -> 다수개 생성 가능 (activity가 화면을 목적으로 하기 때문이지롱) -> 싱글톤 아님!!

service 싱글톤 -> 인텐트가 발생된다고 객체를 다시 생성하진 않음 (화면 출력이 되지 않기에 내부적인 알고리즘으로 해결이 가능하기 때문!)

profile
💻
post-custom-banner

0개의 댓글