【问题标题】:Start a new CountDownTimer inside a run method在 run 方法中启动一个新的 CountDownTimer
【发布时间】:2016-11-27 17:35:40
【问题描述】:

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

为了进入下一个级别,我应该做的是调用CountDownTimer classcancel(),重新调整所有元素以进入下一个级别并再次创建一个新的CountDownTimer。我在实现RunnableGameView 类的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)

提前感谢您的宝贵时间

【问题讨论】:

标签: java android countdowntimer game-loop thread-synchronization


【解决方案1】:

感谢@Roman,我设法解决了我的问题,答案在这里以获得更详细的解释 ---> runOnUiThread inside a View

我所做的只是在我的run() 中使用post() 创建了一个不同的Thread。我再说一遍,我属于SurfaceView 的子类。

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

希望以后对其他人有所帮助!

【讨论】:

    猜你喜欢
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多