我正在构建一款具有AI功能的Android棋盘游戏。 AI转向并且必须调用一系列操作,之后它会向我的自定义视图发布无效更新。
我需要减慢这些动作,以便用户看到AI轮到而不是闪烁。
我在这些方面尝试了一些东西
try {
doFirstThing();
Thread.sleep(500)
//post invalidate
doNextThing();
Thread.sleep(1000)
//post invalidate
}
catch (Exception e) {
}
然而,这绝对没有效果。如果这不明显的话,这也是在一个单独的线程中运行。
我最好的选择我看过处理程序,但是他们不需要正确,因为我需要每次都按顺序更新视图执行一系列任务。
答案 0 :(得分: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
答案 1 :(得分: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);