猿问

如何为Resume Button创建TimerTask的新实例?

早上好!我正在尝试为我的游戏做一个暂停按钮,但是当我想要恢复游戏时再次初始化计时器任务时遇到问题。

我得到错误“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”)?


慕妹3242003
浏览 457回答 2
2回答
随时随地看视频慕课网APP

相关分类

Java
我要回答