Please read this,
Its always a good practice to keep the UI work on UI Thread, and Non-UI work on Non-UI Thread, and since HoneyComb its a law.
We always start with the Dedicated UI Thread, but as soon as we create another thread to do some Non-UI task, we get dropped of the Dedicated UI Thread, and lands on a Non-UI thread, once when we finish our work and want to put the processed Output on the UI thread, its not possible directly, because we have lost the reference to the UI thread. Now Handler helps in getting the reference to the thread in which it was created. So its a good practice to initialize the Handler in onCreate(), and then later call this reference from within the non-ui thread.