Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between service, intentService in android? [duplicate]

Tags:

What is the difference between Service and an IntentService in Android?

What is the difference between AsyncTask and an IntentService in Android?

like image 442
vijaycaimi Avatar asked Jul 16 '15 10:07

vijaycaimi


People also ask

What is difference between service and IntentService in Android?

Service class uses the application's main thread, while IntentService creates a worker thread and uses that thread to run the service. IntentService creates a queue that passes one intent at a time to onHandleIntent() . Thus, implementing a multi-thread should be made by extending Service class directly.

What is an IntentService in Android?

IntentService is an extension of the Service component class that handles asynchronous requests (expressed as Intent s) on demand. Clients send requests through Context.

What is difference between service and thread?

Service : is a component of android which performs long running operation in background, mostly with out having UI. Thread : is a O.S level feature that allow you to do some operation in the background.


1 Answers

1. Difference between Service and IntentService

Service: It is the base class for the Android services, that you can extend for creating any service. Since the service run inside the UI thread, it requires that you create a working thread for executing its work.

IntentService: it is a subclass of Service, that simplifies your work. It works already in a working thread, and can receive asynchronous requests. So, you don't need to create it manually, or to worry about synchronization. You can simply extend it and override the method:

onHandleIntent(Intent intent) 

where you can manage all the incoming requests.

Taking a look at the documentation, you can see in details what the IntentService do for you:

  • Creates a default worker thread that executes all intents delivered to onStartCommand() separate from your application's main thread.
  • Creates a work queue that passes one intent at a time to your onHandleIntent() implementation, so you never have to worry about multi-threading.
  • Stops the service after all start requests have been handled, so you never have to call stopSelf().
  • Provides default implementation of onBind() that returns null.
  • Provides a default implementation of onStartCommand() that sends the intent to the work queue and then to your onHandleIntent() implementation.

So, if you need more control you can use the Service class, but often for a simple service the best solution is the IntentService.

2. Difference between AsyncTask and Service

They are two different concepts.

Service: can be intended as an Activity with no interface. It is suitable for long-running operations.

AsyncTask: is a particular class that wraps a working thread (performing background operations), facilitating the interaction with the UI Thread, without managing threads or handlers directly.

like image 198
GVillani82 Avatar answered Sep 19 '22 07:09

GVillani82