I would recommend you use AsyncTask, because it is simpler than other approaches and fits your needs.
I think you messed up these three different objects a bit:
AsyncTask launches a set of actions in a separate thread, can show progress during its work and show a notification when the task is completed.
Runnable is a command that can be executed. You must run in a separate thread. You should also develop logic in this case, how to update progress and how to notify when a task is completed.
A handler is a special class that can process messages sent to a handler stream.
source share