I know handler attached to a main thread runs on main thread.
final Handler handler = new Handler(Looper.getMainLooper());
handler.postDelayed(new Runnable() {
@Override
public void run() {
}, DELAY_MS);
In the above does the run method actually gets executed on a different back-round thread.