在运行方法内启动一个新的CountDownTimer
问题描述:
我是Android开发新手,我正在尝试创建一个小游戏。我的第一个CountDownTimer
由SurfaceView
的GameView
子类中的构造函数创建。在运行方法内启动一个新的CountDownTimer
我应该怎样做才能通过下一个关卡,请拨打CountDownTimer class
的cancel()
,重新获得下一关的所有元素,并重新创建一个新的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 inside a View
我已经做了什么我只是在我的run()
内使用post()
创建了一个不同的Thread
。我再说一遍,我在SurfaceView
的子类中。
post(new Runnable() {
@Override
public void run() {
myTimer.cancel;
startTimer() //creates a new timer
}
});
希望它能对未来的其他人有所帮助!
您尝试在主线程中运行某些处理UI的函数。 – phnmnn
http://*.com/questions/11086129/runonuithread-inside-a-view –