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

问题描述:

我是Android开发新手,我正在尝试创建一个小游戏。我的第一个CountDownTimerSurfaceViewGameView子类中的构造函数创建。在运行方法内启动一个新的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) 

预先感谢您的宝贵时间

+0

您尝试在主线程中运行某些处理UI的函数。 – phnmnn

+0

http://*.com/questions/11086129/runonuithread-inside-a-view –

感谢@Roman我设法解决我的问题的错误,答案就在这里进行更详细的解释 - - >runOnUiThread inside a View

我已经做了什么我只是在我的run()内使用post()创建了一个不同的Thread。我再说一遍,我在SurfaceView的子类中。

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

希望它能对未来的其他人有所帮助!