Android: таймер Java создается в каждом методе onCreate

Я разрабатываю игру для Android, но столкнулся с проблемой: когда пользователь приостанавливает игру, а затем хочет продолжить, перезапустив приложение, вместо доступа к нему из ОЗУ, каждый раз снова запускается один и тот же таймер.

Вот мой таймер:

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

Итак, всякий раз, когда пользователь запускает приложение (или перезапускает его, пока оно все еще находится в ОЗУ), это выполняется:

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

Таким образом, игрок может злоупотреблять таймером, нажимая кнопку хомба, а затем запускать приложение снова и снова, потому что каждый раз будет больше задач таймера! В Android я получил это:

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

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

методы, но если я использую timer.cancel() в onPause, весь таймер с именем timer отменяется, и запуск приложения, пока он все еще находится в ОЗУ, вызывает исключение.

Я также пробовал Handlers и Runnables, которые рекурсивно вызывают себя, но поскольку я выполняю некоторые тяжелые вычисления в цикле, это замедляет цикл, в отличие от здесь, где это фиксированная скорость! Помогите пожалуйста :С


person user3646267    schedule 09.03.2015    source источник
comment
stackoverflow.com/ вопросы/2098642/   -  person Apurva    schedule 09.03.2015
comment
Я прочитал это, но это действительно не помогает проблеме. Моя проблема заключается не в самом таймере, а в том, что мне нужно когда-нибудь создать таймер (в моем случае в методе onCreate), что приводит к проблеме, заключающейся в том, что при повторном запуске этого приложения у меня работает 2 таймера!   -  person user3646267    schedule 09.03.2015
comment
Теперь попробовал это с ScheduledExecutorService, закончив тем же результатом.   -  person user3646267    schedule 09.03.2015


Ответы (1)


Теперь я заставил его работать с ScheduledExecutorService, который может быть отключен, когда срабатывает «onPause», и просто снова создается экземпляр, когда срабатывает «onResume».

person user3646267    schedule 09.03.2015