Android:Java Timer在每个“onCreate”方法中实例化

时间:2015-03-09 16:57:31

标签: java android timer timertask

我正在开发一款Android游戏,但是我遇到了这个问题,当用户暂停游戏然后想要继续重启应用程序而不是从RAM访问它时,每次同一个计时器再次实例化

这是我的计时器:

public void createTimers() {
        timer.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
//Stuff here
                    }
                });
            }
        }, 0, 1000 / 60);

因此,每当用户启动应用程序(或重新启动它,而它仍然在RAM中)时,这就是执行:

Timer timer = new Timer();
createTimers();

这样玩家可以通过按下hombe按钮来滥用计时器,然后一遍又一遍地启动应用程序,因为每次都会有更多的计时器任务! 在Android中我得到了这些:

@Override
protected void onPause() {
    super.onPause();
}

@Override
protected void onResume() {
    super.onResume();
}

方法,但是如果我在onPause中使用timer.cancel(),整个Timer命名计时器将被取消并且应用程序的启动会在它仍在RAM中时抛出异常。

我也尝试过Handler和Runnables,递归调用自己,但是当我在循环中做一些繁重的计算时,它减慢了循环,不像这里,它是固定的速率! 帮助:S

1 个答案:

答案 0 :(得分:0)

我现在使用ScheduledExecutorService,它可以在" onPause"被触发,然后再次实例化,当" onResume"触发了。