繁体   English   中英

在运行方法中启动一个新的CountDownTimer

[英]Start a new CountDownTimer inside a run method

我是android开发的新手,我正在尝试创建一个小游戏。 我的第一个CountDownTimer由构造函数在SurfaceView GameView子类中创建。

为了传递下一个级别,我应该做的是调用CountDownTimer classcancel() ,将所有元素重新适配到下一个级别,然后再次创建一个新的CountDownTimer 我在实现Runnable GameView类的run()中执行此操作。

我一直在在线阅读内容,但是大多数解决方案都使用Activities ,正如我所说,我正在SurfaceView的子类中工作。

这是我收到的错误

E/AndroidRuntime: FATAL EXCEPTION: Thread-4
              Process: com.example.lucadigiammarino.biogame, PID: 3569
              java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
                  at android.os.Handler.<init>(Handler.java:200)
                  at android.os.Handler.<init>(Handler.java:114)
                  at android.os.CountDownTimer$1.<init>(CountDownTimer.java:114)
                  at android.os.CountDownTimer.<init>(CountDownTimer.java:114)
                  at com.example.lucadigiammarino.biogame.GameCountDownTimer.<init>(GameCountDownTimer.java:0)
                  at com.example.lucadigiammarino.biogame.GameView.startTimer(GameView.java:135)
                  at com.example.lucadigiammarino.biogame.GameView.run(GameView.java:306)
                  at java.lang.Thread.run(Thread.java:761)

预先感谢您的时间

感谢@Roman,我设法解决了我的问题,答案在这里是更详细的说明---> 视图内的runOnUiThread

我完成的工作就是使用post()run()内创建了另一个Thread 我重复说我在SurfaceView的子类中。

post(new Runnable() {
    @Override
    public void run() {
        myTimer.cancel;
        startTimer() //creates a new timer
    }
});

希望将来对其他人有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM