16

我正在构建一个具有 AI 功能的安卓棋盘游戏。AI 得到一个转折点,必须调用一系列操作,然后将无效发布到我的自定义视图以进行更新。

我需要放慢这些动作,这样用户才能看到 AI 轮到它了,而不是一闪而过。

我已经尝试过这些方面的东西

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

        doNextThing();
        Thread.sleep(1000)
        //post invalidate
     }
     catch (Exception e) {
     }

但是,这绝对没有效果。如果这不明显,这也将在单独的线程中运行。

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

4

2 回答 2

21

使用处理程序,如果您从 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
于 2013-01-24T21:21:34.530 回答
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);
于 2015-02-26T21:52:07.573 回答