0
임의로 상태를 변경해야하는 타이머가 있습니다. 새로운 무작위 시간이 지난 후에 다시 시작해야합니다. 하지만 문제가 있는데, 그걸 호출하려고 할 때 "스레드가 Looper.prepare()를 호출하지 않은 상태에서 처리기를 생성 할 수 없습니다"라는 오류 메시지가 스레드에서 실행되지 않는다고합니다.TimerTask는 호출 스레드에서 실행되지 않습니다.
어떻게하면 좋을까요?
public class GameScreen extends Screen {
public void startTimer(){
scanTask = new TimerTask() {
public void run() {
random = new Random();
int randState= random.nextInt(3);
state = randState;
}
};
int rand = random.nextInt(7);
timer.schedule(scanTask, (rand + 4) * 1000);
}
public void stopScan(){
if(scanTask!=null){
scanTask.cancel();
}
}
public GameScreen(Game game) {
super(game);
startTimer();
}
}
다음은 오류 스택입니다.
07-23 20:49:28.917: E/AndroidRuntime(330): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
07-23 20:49:28.917: E/AndroidRuntime(330): at android.os.Handler.<init>(Handler.java:121)
07-23 20:49:28.917: E/AndroidRuntime(330): at com.testApp.myApp.GameScreen.<init>(GameScreen.java:35)
07-23 20:49:28.917: E/AndroidRuntime(330): at com.testApp.myApp.GameScreen.MainMenuScreen.update(MainMenuScreen.java:26)
07-23 20:49:28.917: E/AndroidRuntime(330): at com.testApp.framework.implementation.AndroidFastRenderView.run(AndroidFastRenderView.java:41)
07-23 20:49:28.917: E/AndroidRuntime(330): at java.lang.Thread.run(Thread.java:1019)
그게 큰 함께 할 수 없다! 이전 시도에서 처리기를 남겨 두었습니다. 사용하지 않았으므로 이런 효과를 낼 수 있다고 생각하지 않았습니다! 고마워! – Nick3