2016-05-14 3 views
0

Итак, у меня есть метод таймера в моей программе, который использует целое число z как его параметр, а также задержку для самого таймера. Но каждый раз, когда я запускаю этот метод, он создает новый таймер, не удаляющий старый. Поэтому я решил добавить блок if else, который сделал его так, что он только создал таймер в первый раз, но теперь он говорит, что он, возможно, не был инициализирован, потому что он был инициализирован в блоке if else. Кто-нибудь может мне помочь?Изменение задержки таймера без создания нового при каждом запуске метода

public void timer(int z) { 
    int count = 0; 
    Timer tester; 
    z = (60000/z); 
    decide = true; 
    ActionListener taskPerformer = new ActionListener() { 
     public void actionPerformed(ActionEvent evt) {noteDecider();} 
    }; 
    if(count == 0) { 
     tester = new Timer(z, taskPerformer); 
     tester.start(); 
    } 
    else { 
     tester.setDelay(z); 
     tester.start(); 
    } 
    count++; 
} 
+0

нет причин пытаться сохранить память таким образом в Java, если вы действительно хотите, чтобы я предположил, что вы должны определить таймер глобально, вне метода. – TheFooBarWay

+0

Как инициализировать это глобально? Он не распознает исполнитель задачи actionListener, когда я инициализирую его в конструкторе? –

ответ

0

Я бы сказал, что если вы беспокоитесь об оптимизации своего кода, вы должны изучить оптимизацию своего класса Timer. Как перемещение объекта ActionListener внутри самого таймера и многое другое. Весь ваш метод таймера (int z) пытается использовать объект для отслеживания времени, не управляющего жизненным циклом объектов Timer.

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