How to delay execution android

android, multithreading, postdelayed

Solution

Using a Handler, which is a good idea if you are executing from a UI thread...

    final Handler h = new Handler();

    final Runnable r2 = new Runnable() {

        @Override
        public void run() {
            // do second thing
        }
    };

    Runnable r1 = new Runnable() {

        @Override
        public void run() {
            // do first thing
            h.postDelayed(r2, 10000); // 10 second delay
        }
    };

    h.postDelayed(r1, 5000); // 5 second delay

Problem

I am building an android board game which features AI. The AI gets a turn and has to invoke a series of actions after which it posts invalidate to my custom view to update. I need to slow down these actions so the user gets to see the AI having its turn rather than it flashing by. I have tried something along these lines ``` try { doFirstThing(); Thread.sleep(500) //post invalidate doNextThing(); Thread.sleep(1000) //post invalidate } catch (Exception e) { } ``` However this is having absolutely no effect. Also this is running in a separate thread if this wasn't obvious. Whats my best option I've looked at handler but they don't need right as i need to execute a series of tasks in sequence updating the view each time.

Original source