IntentService와 서비스의 차이점은 무엇입니까? [복제]
이 질문에는 이미 답변이 있습니다.
- 서비스 대 IntentService 11 답변
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
자동으로 종료됩니다. 사용 예는 인터넷에서 특정 리소스를 다운로드하는 것입니다.
차이점
Service
클래스는 응용 프로그램의 기본 스레드를IntentService
사용하고 작업자 스레드 를 만들고 해당 스레드를 사용하여 서비스를 실행합니다.IntentService
한 번에 하나의 의도를 전달하는 대기열을 만듭니다onHandleIntent()
. 따라서Service
클래스를 직접 확장하여 멀티 스레드를 구현해야합니다 .Service
클래스를 사용하여 수동 중지가 필요합니다stopSelf()
. 한편,IntentService
실행이 끝나면 자동으로 중지됩니다.IntentService
onBind()
를 반환하는 구현 합니다null
. 이는IntentService
기본적으로를 바인딩 할 수 없음을 의미합니다 .IntentService
onStartCommand()
Intent를 queue 및로 보내는 구현 을 구현 합니다onHandleIntent()
.
간단히 말해서 사용할 두 가지 작업 만 있습니다 IntentService
. 먼저 생성자를 구현합니다. 그리고 둘째로 onHandleIntent()
. 다른 콜백 메소드의 경우, super를 올바르게 추적 할 수 있도록 super를 호출해야합니다.
서비스 : 시스템의 백그라운드에서 실행됩니다. 예를 들어
- 호텔에 가서 서버에 수프 주문을한다면
- 서버가 주문을 받고 요리사에게 보냅니다.
- 부엌에서 수프를 만드는 방법과 수프를 만드는 데 필요한 과정을 모르는 경우
- 주문이 준비되면 서버가 수프를 제공합니다.
배경 과정 : 수프를 만드는 요리사
IntentService :-그것은 연속적인 서비스입니다. (즉) 한 번에 많은 음식 품목을 서버에 주문할 때 서버가 그 품목을 하나씩 배달하고 한 번에 모든 품목을 배달하지 않는 경우.
이 주제에 대한 Tejas Lagvankar의 게시물을 참조하십시오 . 다음은 Service와 IntentService와 다른 구성 요소의 주요 차이점입니다.
Service
실제로 앱의 동일한 스레드에서 실행됩니다. 서비스를 확장 할 때 CPU 차단 작업을 실행하려면 새 스레드를 수동으로 생성해야합니다.
vs
IntentService
Service
백그라운드에서 백그라운드 작업을 수행하기 위해 스레드를 생성 하는 서브 클래스입니다 (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 호출을 통해 앱과 백엔드 간 통신에 지속적으로 사용되는 서비스입니다. 현재 작업을 마치더라도 몇 분 후에도 더 많은 의사 소통을하기를 원합니다.
'programing tip' 카테고리의 다른 글
CSS를 사용하여 빈 입력 상자 일치 (0) | 2020.07.09 |
---|---|
JavaScript를 사용하여 문자열을 기반으로 16 진수 색상 만들기 (0) | 2020.07.09 |
https를 통해 파일을 다운로드하려면 openssl 확장을 활성화해야합니다 (0) | 2020.07.09 |
JVM 인수를 통한 log4j 구성? (0) | 2020.07.09 |
로컬로 누락 된 모든 파일을 삭제하는 SVN 명령 (0) | 2020.07.09 |