As from the docs:
The IntentService
does the following:
- 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.
And also:
All this adds up to the fact that all you need to do is implement
onHandleIntent()
to do the work provided by the client. (Though, you
also need to provide a small constructor for the service.)
So an IntentService
is a "Custom" Service
with those special properties. So there's no need to override the onStartCommand()
, actually, you shouldn't do it unless you're using the regular Service
class.
Some example of IntentService
usage:
Activity.java
Intent it = new Intent(getApplicationContext(), YourIntentService.class);
it.putExtra("Key", "Value");
startService(it);
YourIntentService.java
public YourIntentService() {
super("YourIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
if (intent != null) {
String str = intent.getStringExtra("key");
// Do whatever you need to do here.
}
//...
}
You can also check this tutorial or this one for more info about Service
and IntentService
.
Also, check the docs.