프로그래밍 언어/Android

Android 플랫폼에서 Service vs IntentService

Rateye 2021. 8. 27. 16:12
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
반응형