Question: My app needs a background service, where I can submit tasks to. The tasks can be quite generic, it might involve downloading feeds, fetching location one time, or fetching resources.This service needs minimal interaction from the activities and it should be started when the app launches and should quit if there is no pending task in the queue.

Is it a good idea? How would I design such a service? All suggestions are welcome

Answer: 
Hoping this architecture will help you:

1. If you want to perform your task even after your activity is finished then use `startService()` else if you want to terminate all the tasks as soon as activity finishes then use `bindService()`.
2. When you call `startservice()` its oncreate() method is not called if the service is already running but its `onStartCommand()` gets called every time you call `startservice()`. You can use this property.
3. You can implement a static method which can be accessed from your activity to put task in it and when you get the call in static method you can start a thread executing your tasks.

Note: Don't forget to release all the resources(threads etc.) in the service as android won't do it for you.

If your activity has finished then on task execution complete you can use `stopSelf()` for the service and release all the resources.

you can try IntentService if it meets your need. Check [this](http://developer.android.com/reference/android/app/IntentService.html) for more details.
IntentService might help, if you need to process requests one at a time. They are automatically queued to a worker thread.