It really depends on what you need to achieve. In my experience, I have worked with IntentServices for background processing, no matter how long or short the work will be. What is great with IntentServices is that it deploys a worker thread for every job you schedule on it. You can schedule n number of tasks and the IntentService will execute each at a time on its onHandleIntent method and when done, it will automatically shut down. To get a response back to the activity when job is finished, you could implement Broadscast or ResultReceivers.
I haven't worked enough with Handler or AsyncTask but from what I have read and understand, they are better used when the work you schedule them does not require to finish or is not high priority if the dispatching Activity finishes.
Hope it helps.