1. 언제쓰이나?
· Service : UI없이 실행될 수 있지만 매우 길지 않아야 한다. 만약 오래걸리는 작업을 Service에서 실행하고자 한다면 Service 안에서 스레드를 사용해야 한다.
· IntentService : 오래걸리지만 메인스레드와 관련이 없는 작업을할 때 주로 이용한다. 만약 메인 스레드와 관련된 작업을 해야 한다면 메인스레드 Handler나 Boradcast intent를 이용해야 한다.
2. 어떻게 실행시키나?
· Service : startService() 메소드에 의해 실행된다.
· IntentService : Intent사용에 의해 실행된다. 새로운 스레드가 생성되며 onHandleIntent()가 불린다.
3. 불리는 위치
· Service와 IntentService 모두 아무 스레드에서 생성되고 , 액티비티 뿐만 아니라 다른곳에서도 실행가능하다.
4. 실행중인 위치
· Service : 백드라운드에서 동작하지만 메인스레드에 포함된다.
· IntentService : 새로운 스레드에서 동작한다.
5. 어떻게 멈추나
· Service : 순전히 사용자의 몫이다. stopSelf()나 stopService()에 의해 동작이 멈춘다. Service Binding의 경우 필요없음.
· IntentService : onHandleIntent() 내의 모든 동작이 수행되면 멈춘다. 멈추기 위한 다른 메소드 호출이 불필요한다.
6. 단점?
· Service : 메인스레드에 포함되므로 무거운 작업일때 메인스레드에 영향을주어 느려지거나 할 수 있다.
· IntentService : 병렬적으로 수행될 수 없으므로 연속적인 Intent 호출에 관해서 순차적으로 처리된다.
'Android' 카테고리의 다른 글
[Android] APK 생성시 이름 변경하기 (0) | 2016.11.10 |
---|---|
[Android] Android API 버전 정보(SDK INT) (0) | 2016.11.10 |
[Android] HttpURLConnection을 사용하여 Multipart Upload를 ProgressBar로 보여주기 (0) | 2016.11.10 |
[Android] RecyclerView 에서 드래그앤드롭(drag&drop)과 스와이프(swpie&dismiss) 사용하기 (2) | 2016.11.10 |
[Android] Android SDK command line Linux 설치하기 (0) | 2016.11.10 |