早上好!我正在尝试为我的游戏做一个暂停按钮,但是当我想要恢复游戏时再次初始化计时器任务时遇到问题。我得到错误“java.lang.IllegalStateException:TimerTask已经被调度”,根据我的研究,因为TimerTask不能被重用,所以必须创建一个新的实例。我尝试在我的MainActivity中创建一个用于此目的的方法,然而,这不起作用。这就是我正在使用的:public class MainActivity extends AppCompatActivity{
public FishView gameView;
//pause variables
Button pauseButton;
private boolean pauseFlag = false;
private final long animationPeriod = 600;
Timer movementTimer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
screen = findViewById(R.id.gameScreen);
gameView = new FishView(this);
screen.addView(gameView);
pauseButton = findViewById(R.id.pauseButton);
movementTimer = new Timer();
movementTimer.scheduleAtFixedRate(animationTask, 0, animationPeriod);
}
//this is the timer I want to reuse
private TimerTask animationTask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
@Override
public void run() {
//set animation
int selectedFish = gameView.getSelectedFish();
if (selectedFish==1){
gameView.setSelectedFish(0);}
if (selectedFish==0){
gameView.setSelectedFish(1); }
//update screen
gameView.invalidate();
}
});
}
};我想知道的是,每当我按下恢复按钮时,我如何创建一个新的TimerTask(如“animationTask”)?
添加回答
举报
0/150
提交
取消