一个简单的Android游戏时钟?

时间:2018-08-28 16:24:09

标签: java android multithreading

我正在尝试使用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();

}

但是,当我启动该应用程序时,它只是挂起而不显示任何内容。为什么会这样?我如何才能使其按预期工作?

1 个答案:

答案 0 :(得分:1)

通过执行#kwd_search,您只需在当前线程中执行new GameClock(this).run();方法,就需要调用run来启动新线程。