728x90
반응형
질문 : Android 플랫폼의 서비스 대 IntentService
IntentService
로 수행 할 수 있지만 Service
로는 수행 할 수없는 작업의 예를 찾고 있습니까?
또한 IntentService
는 다른 스레드에서 실행되고 Service
는 실행되지 않는다고 생각합니다. 따라서 내가 볼 수있는 한 자체 스레드 내에서 서비스를 시작하는 것은 IntentService
시작하는 것과 같습니다. 그 맞습니까?
답변
Tejas Lagvankar는이 주제에 대한 멋진 게시물을 작성했습니다. 다음은 Service와 IntentService의 몇 가지 주요 차이점입니다.
언제 사용합니까?
- 서비스 는 UI가없는 작업에서 사용할 수 있지만 너무 길어서는 안됩니다. 긴 작업을 수행해야하는 경우 서비스 내에서 스레드를 사용해야합니다.
- IntentService 는 일반적으로 메인 스레드와 통신하지 않는 긴 작업에서 사용할 수 있습니다. 통신이 필요한 경우 Main Thread 핸들러 또는 브로드 캐스트 인 텐트를 사용할 수 있습니다. 또 다른 사용 사례는 콜백이 필요한 경우입니다 (인 텐트 트리거 작업).
트리거하는 방법?
- 서비스
startService()
메서드를 호출하여 트리거됩니다. - IntentService 는 Intent를 사용하여 트리거되고 새 작업자 스레드를 생성하며
onHandleIntent()
메서드가이 스레드에서 호출됩니다.
에서 트리거
- 서비스 및 IntentService 는 모든 스레드, 활동 또는 기타 응용 프로그램 구성 요소에서 트리거 될 수 있습니다.
실행
- 서비스 는 백그라운드에서 실행되지만 애플리케이션의 메인 스레드에서 실행됩니다.
- IntentService 는 별도의 작업자 스레드에서 실행됩니다.
한계 / 단점
- 서비스 는 애플리케이션의 메인 스레드를 차단할 수 있습니다.
- IntentService 는 작업을 병렬로 실행할 수 없습니다. 따라서 모든 연속 인 텐트는 작업자 스레드의 메시지 대기열로 이동하여 순차적으로 실행됩니다.
언제 멈출까요?
- Service 를 구현하는 경우
stopSelf()
또는stopService()
를 호출하여 서비스를 중지하는 것은 사용자의 책임입니다. (바인딩 만 제공하려는 경우이 메서드를 구현할 필요가 없습니다). - IntentService 는 모든 시작 요청이 처리 된 후 서비스를 중지하므로
stopSelf()
를 호출 할 필요가 없습니다.
출처 : https://stackoverflow.com/questions/15524280/service-vs-intentservice-in-the-android-platform
728x90
반응형
'프로그래밍 언어 > Android' 카테고리의 다른 글
Android Studio 프로젝트의 경우 .gitignore에 작성해야 하는 것 (0) | 2021.08.27 |
---|---|
Android Emulator에서 내 http : // localhost 웹 서버에 연결하는 방법 (0) | 2021.08.27 |
Android에서 'Context' 클래스에 대해서 (0) | 2021.08.26 |
Android 오류 - R cannot be resolved (0) | 2021.08.26 |
Android 에뮬레이터의 속도를 높이는 방법 (0) | 2021.08.23 |