如何延迟执行android

Luk*_*Feo 16 multithreading android postdelayed

我正在构建一个具有AI功能的Android棋盘游戏.AI转向并且必须调用一系列操作,之后它会向我的自定义视图发布无效更新.

我需要减慢这些动作,以便用户看到AI轮到而不是闪烁.

我试过这些方面的东西

    try {
        doFirstThing();
        Thread.sleep(500)
        //post invalidate

        doNextThing();
        Thread.sleep(1000)
        //post invalidate
     }
     catch (Exception e) {
     }
Run Code Online (Sandbox Code Playgroud)

然而,这绝对没有效果.如果这不明显,这也是在一个单独的线程中运行.

什么是我最好的选择我看过处理程序,但他们不需要正确,因为我需要按顺序执行一系列任务每次更新视图.

inv*_*igo 21

使用Handler,如果您从UI线程执行,这是一个好主意...

    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
Run Code Online (Sandbox Code Playgroud)


Tob*_*iug 16

只是添加一个示例:以下代码可以在UI线程之外执行.当然,Handler必须用于延迟Android中的任务

Handler handler = new Handler(Looper.getMainLooper());
final Runnable r = new Runnable() {
    public void run() {
        //do your stuff here after DELAY milliseconds
    }
};
handler.postDelayed(r, DELAY);
Run Code Online (Sandbox Code Playgroud)