티스토리 뷰
Service?
사용자 인터페이스(GUI) 없이 background 에서 동작하는 component
(Android 4대 component : Activity, Service, Broadcast receiver, Contents provider)
Background 때문에 혼동할 수 있지만 사실 service 는 main thread 에서 동작한다!!
왜?
1. Activity 가 종료되어 있는 상태에서도 동작한다.
: Activity 에서 thread 사용 시 별도의 종료가 없다면 activity 가 종료되어도 thread 는 계속 동작한다.
하지만, activity 가 종료되면 activity 의 생명주기에 맞춰 thread 도 종료 시켜주는게 바람직하다.
즉, 앱이 종료되어도 thread 가 동작해야 한다면 바로 service 를 이용해야 한다.
2. 앱이 구동 중 종료되어도 강제 종료된 service 를 다시 시작하게 할 수 있다. (옵션에 따름)
: 1번의 연장선에서 thread 를 사용한다면 앱 구동 중 강제 종료 시 다시 시작할 수 없지만 service 는 옵션에
따라 시스템이 다시 시작하게 할 수 있다.
3. 다른 process(package) 에 있는 특정 함수를 호출하거나 callback 을 받고 싶을 때 사용할 수 있다.
: IPC (Interprocess Communication)
종류
1. 시작타입 서비스 (started service)
: startService() 호출, 한 번 시작되면 background 에서 무기한 실행되만, 보통 한 작업을 수행하고 서비스가
종료된다. 호출한 곳에 결과값을 반환하지 않는다.
2. 연결타입 서비스 (bound service)
: bindService() 호출, client - server 구조로 동작한다. (양방향 작업이 가능하다.)
Activity 가 종료되면 service 도 소멸되며 하나의 service 에 여러 activity 가 연결 가능하다.
Life cycle
onCreate
- 서비스가 처음 초기화 될때 실행
- 최초 한번만 호출됨
■ 시작타입 서비스 (started service)
onStartCommand
- 서비스가 호출될 때마다 실행
- 동작 모드 (return 값)
START_STICKY : 시스템에 의해 종료되어도 리소스가 여유로워지면 다시 서비스 시작
START_NOT_STICKY : 시스템에 의해 종료되어도 다시 서비스 안 됨
START_REDELIVER_INTENT : START_STICKY 와 비슷하며, Intent 값까지 모두 요주시켜 줌
■ 연결타입 서비스 (bound service)
onBind
- 바인딩을 허용하는지 확인 후, 허용한다면 서비스와 컴포넌트 사이의 통신에 필요한 IBinder 를 반환.
onUnBind
- 서비스와 컴포넌트의 바인딩 해제
return true : 새로운 컴포넌트가 서비스에 바인드될 때 onRebind() 호출
return false : 새로운 컴포넌트가 서비스에 바인드될 때 onBind() 호출
onDestory
- 서비스가 종료될 때 실행
'Android > Service' 카테고리의 다른 글
[Android O] Not allowed to start service Intent (2) | 2018.10.19 |
---|---|
Service (4) - bindService (0) | 2018.10.16 |
Service (3) - bound service (0) | 2018.10.10 |
Service (2) - started service (3) | 2018.08.28 |
- Total
- Today
- Yesterday
- mPANDO
- registerForContextMenu
- 무료채굴
- Android Service
- StartService
- Intent
- 리워드 어플
- StringUtils
- RoomDatabase
- 무료 채굴
- BroadcastReceiver
- onCreateContextMenu
- 채굴앱
- onContextItemSelected
- M2E
- 안드로이드 서비스
- task
- WEMIX
- android intent
- android flag activity
- bindservice
- 안드로이드 인텐트
- task 생성
- notifyDataSetChanged
- android task
- 앱테크 추천
- android activity flag
- 앱테크
- 리워드앱
- p2e
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |