繁体   English   中英

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

[英]Android: Java Timer instantiated in each “onCreate” method

我正在开发一个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按钮滥用计时器,然后一次又一次地启动应用程序,因为每次都会有更多的timerTasks! 在Android中,我得到了这些:

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

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

方法,但是如果我在onPause中使用timer.cancel(),则取消了名为timer的整个Timer并启动了应用程序,而该应用程序仍在RAM中时会引发异常。

我还尝试了递归调用自己的Handlers和Runnables,但是由于我在循环中进行了一些繁重的计算,因此减慢了循环速度,这与此处的固定速率不同! 帮助请:S

我现在使它与ScheduledExecutorService一起使用,可以在触发“ onPause”时将其关闭,而当触发“ onResume”时,只需再次实例化即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM