private Handler handler = new Handler(); // created on the main thread private void executeOnSeparateThread() { Thread separateThread = new Thread(new Runnable() { @Override public void run() { // do some background processing here handler.post(new Runnable() { @Override public void run() { // access the graphical user interface here } }); } }); separateThread.start(); }