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.