Q:

Make Asynchronous Calls to a Service (Android)

Right now I have an Activity and a local Service. I need to be able to call a service method asynchronously from the activity. The only ways I know of communicating between a service and an activity is through Intents, binding, and AIDL. 
I tried binding, but bound service calls are synchronous. 
Using intents (modifying the intent passed to startService) doesn't work either because onStartCommand is called on the main thread. 
I'd rather not resort to AIDL because it seems rather complicated. Any alternatives I'm missing?
btw Making Asynchronous Service calls in Android does not answer my question
PROLOGUE
Following CommonWare's answer I decided to use a service with a ThreadPoolExecuter

A:

The only ways I know of communicating between a service and an activity is through Intents, binding, and AIDL. 

AIDL is binding. AIDL makes it possible to bind between apps.

I tried binding, but bound service calls are synchronous. 

Make the call in a background thread, then.

Using intents (modifying the intent passed to startService) doesn't work either because onStartCommand is called on the main thread. 

The service can use a background thread, then. For example, an IntentService supplies a background thread, passing the Intent delivered originally to onStartCommand() on to your onHandleIntent() method.

Any alternatives I'm missing?

None that avoid the background thread.

