2015-03-09 3 views
0

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

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

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(); 

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

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

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

методы, но если я использую timer.cancel() в OnPause, весь таймер с именем таймер отменяется и запуск приложения, в то время как он все еще в RAM Выдает исключение.

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

+0

http://stackoverflow.com/questions/2098642/pausing-stopping-and-starting-resuming-java-timertask-continuously – Apurva

+0

Я прочитал это, но это действительно не помогает. Моя проблема заключается не в самом таймере, а в том, что мне нужно создать таймер (в моем случае в методе onCreate), что приводит к проблеме, что, начиная с этого приложения, у меня тогда есть 2 таймера! – user3646267

+0

Теперь попробовал это с помощью ScheduledExecutorService, заканчивая тем же результатом. – user3646267

ответ

0

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

Смежные вопросы