早上好!我正在尝试为我的游戏做一个暂停按钮,但是当我想要恢复游戏时再次初始化计时器任务时遇到问题。
我得到错误“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”)?
相关分类