When performing certain tasks in android, it is highly recommended to use Handler, because:
In Android, you can only update views in the original stream, i.e. the thread in which they were created, otherwise the application may throw an exception saying
android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
Handlers in Android are tied to the thread in which they are created. Each Handler instance is associated with one thread and this thread's message queue. When you create a new handler, it is attached to the thread / message queue of the thread that creates it - from this point it will deliver messages and executable files to the message queue and execute them as they exit the message queue. Thus, Handlers are the safest for Android.
While Services, Heres a piece of code from http://developer.android.com/reference/android/app/Service.html
What is a service?
The big confusion regarding the Service class actually revolves around the fact that this is not the case:
Service is not a separate process. The service object itself does not imply that it works in its own process; Unless otherwise specified, it works in the same process as the application in which it is included.
Service is not a thread. This does not mean that you need to do the work of the main thread (to avoid errors associated with application errors). Thus, the service itself is actually very simple, providing two main functions:
Establishing an application to tell the system what it wants to do in the background (even if the user does not interact directly with the application). This corresponds to calls to Context.startService (), which ask the system for a schedule of the service, which must be executed until the service or someone else explicitly stops it.
An application tool for providing some of its functions to other applications. This corresponds to calls to Context.bindService (), which allows you to establish a long connection with the service to interact with it.
And finally Threads,
threads are used to perform some heavy functions not related to viewing, some heavy calculations work like parsing, etc., so that it does not block your user interface and does all the work safely ...