programing tip

IntentService와 서비스의 차이점은 무엇입니까?

itbloger 2020. 7. 9. 19:23
반응형

IntentService와 서비스의 차이점은 무엇입니까? [복제]


이 질문에는 이미 답변이 있습니다.

IntentService의 차이점을 이해하도록 도와 주 Service시겠습니까?


요컨대, 서비스는 개발자가 백그라운드 작업을 설정하기 위해보다 폭 넓은 구현이고, IntentService는 백그라운드 스레드 생성 및 정리를 관리하여 "화재 및 잊어 버리기"작업에 유용합니다.

문서에서 :

서비스 서비스는 사용자와 상호 작용하지 않으면 서 더 오래 실행되는 작업을 수행하거나 다른 응용 프로그램에서 사용할 기능을 제공하려는 응용 프로그램의 요구를 나타내는 응용 프로그램 구성 요소입니다.

IntentService Service는 요청시 비동기 요청 ( Intents로 표시) 을 처리 하는 IntentService Services 의 기본 클래스입니다 . 클라이언트는 전화를 통해 요청을 보냅니다 startService(Intent). 서비스는 필요에 따라 시작되고 작업자 스레드를 사용하여 각 Intent를 차례로 처리하며 작업이 부족할 때 자체 중지됩니다.

이 문서를 참조하십시오-http: //developer.android.com/reference/android/app/IntentService.html


Service기본 서비스 클래스 구현입니다. Service응용 프로그램의 메인 스레드에서 실행되므로 응용 프로그램 성능이 저하 될 수 있습니다. 따라서 IntentService서비스의 직접적인 하위 클래스 인을 (를) 사용하여 작업을보다 쉽게 ​​수행 할 수 있습니다.

IntentService백그라운드에서 특정 작업을 수행하는 데 사용됩니다. 완료되면 인스턴스가 IntentService자동으로 종료됩니다. 사용 예는 인터넷에서 특정 리소스를 다운로드하는 것입니다.

차이점

  1. Service클래스는 응용 프로그램의 기본 스레드를 IntentService사용하고 작업자 스레드 만들고 해당 스레드를 사용하여 서비스를 실행합니다.
  2. IntentService한 번에 하나의 의도를 전달하는 대기열을 만듭니다 onHandleIntent(). 따라서 Service클래스를 직접 확장하여 멀티 스레드를 구현해야합니다 . Service클래스를 사용하여 수동 중지가 필요합니다 stopSelf(). 한편, IntentService실행이 끝나면 자동으로 중지됩니다.
  3. IntentServiceonBind()를 반환하는 구현 합니다 null. 이는 IntentService기본적으로를 바인딩 할 수 없음을 의미합니다 .
  4. IntentServiceonStartCommand()Intent를 queue 및로 보내는 구현 구현 합니다 onHandleIntent().

간단히 말해서 사용할 두 가지 작업 만 있습니다 IntentService. 먼저 생성자를 구현합니다. 그리고 둘째로 onHandleIntent(). 다른 콜백 메소드의 경우, super를 올바르게 추적 할 수 있도록 super를 호출해야합니다.


서비스 : 시스템의 백그라운드에서 실행됩니다. 예를 들어

  1. 호텔에 가서 서버에 수프 주문을한다면
  2. 서버가 주문을 받고 요리사에게 보냅니다.
  3. 부엌에서 수프를 만드는 방법과 수프를 만드는 데 필요한 과정을 모르는 경우
  4. 주문이 준비되면 서버가 수프를 제공합니다.

배경 과정 : 수프를 만드는 요리사

IntentService :-그것은 연속적인 서비스입니다. (즉) 한 번에 많은 음식 품목을 서버에 주문할 때 서버가 그 품목을 하나씩 배달하고 한 번에 모든 품목을 배달하지 않는 경우.


이 주제에 대한 Tejas Lagvankar의 게시물을 참조하십시오 . 다음은 Service와 IntentService와 다른 구성 요소의 주요 차이점입니다.

여기에 이미지 설명을 입력하십시오


Service실제로 앱의 동일한 스레드에서 실행됩니다. 서비스를 확장 할 때 CPU 차단 작업을 실행하려면 새 스레드를 수동으로 생성해야합니다.

vs

IntentServiceService백그라운드에서 백그라운드 작업을 수행하기 위해 스레드를 생성 하는 서브 클래스입니다 (CPU 차단 작업을 수행하기 위해 새 스레드를 만들 필요가 없음).


서비스

  • UI가없는 작업이지만 긴 작업에는 사용해서는 안됩니다. 긴 작업을 위해 서비스 내에서 스레드 사용
  • 에 의해 호출 onStartService()
  • 모든 스레드에서 트리거
  • 메인 스레드에서 실행
  • main(UI스레드를 차단할 수 있음 )

IntentService

  • Long task usually no communication with main thread if communication is needed then it is done by Handler or broadcast
  • Invoke via Intent
  • triggered from Main Thread (Intent is received on main Thread and worker thread is spawned)
  • Runs on separate thread
  • We can't run task in parallel and multiple intents are Queued on the same worker thread.

Service: Works in the main thread so it will cause an ANR (Android Not Responding) after a few seconds.

IntentService: Service with another background thread working separately to do something without interacting with the main thread.


Intent service is child of Service

IntentService: If you want to download a bunch of images at the start of opening your app. It's a one-time process and can clean itself up once everything is downloaded.

서비스 : 웹 API 호출을 통해 앱과 백엔드 간 통신에 지속적으로 사용되는 서비스입니다. 현재 작업을 마치더라도 몇 분 후에도 더 많은 의사 소통을하기를 원합니다.

참고 URL : https://stackoverflow.com/questions/7771323/what-is-the-difference-between-an-intentservice-and-a-service

반응형