(참고)
IntentService는 1.자동으로 종료가 되고,
2.스레드를 사용하지 않아도 된다.
왜냐하면 onHandleIntent()는 "백그라운드 스레드"로 동작을 하게 됩니다
service는 1.종료가 되지 않는다!!!!
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 > Tip' 카테고리의 다른 글
[Android] 서비스(Service) - (3)사용법(서비스에서 액티비티로 보내기) (0) | 2020.04.24 |
---|---|
[Android] 서비스(Service) - (1)사용법(만드는 방법), (2)(액티비티에서 서비스로 보내기) (0) | 2020.04.24 |
[Android] Export 방법(내보내기) (0) | 2020.04.24 |
[Android] List - (4)채팅 틀 구현 (0) | 2020.04.23 |
[Android] 네트워크(1) - 사용예 (3.인터넷의 JSON 데이터 읽기) (0) | 2020.04.08 |