我正在尝试使用Android SDK来实现一个简单的游戏。该游戏使用自定义视图作为游戏区域。我试图使用此代码段为游戏添加一个简单的时钟。基本上,它将启动一个线程,该线程以固定频率在自定义游戏视图上调用invalidate
:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
class GameClock extends Thread {
CanvasView cv;
public GameClock(Activity ctx) {
cv = ctx.findViewById(R.id.MainGame);
}
public void run() {
while (! cv.initialized) {
try {
Thread.sleep(100);
} catch (InterruptedException ignored) {
}
}
// TODO: fix this
while (true) {
cv.invalidate();
try {
Thread.sleep(100);
} catch (InterruptedException ignored) {
}
}
}
}
new GameClock(this).run();
}
但是,当我启动该应用程序时,它只是挂起而不显示任何内容。为什么会这样?我如何才能使其按预期工作?
答案 0 :(得分:1)
通过执行#kwd_search
,您只需在当前线程中执行new GameClock(this).run();
方法,就需要调用run
来启动新线程。