2016-06-16 5 views
0

Я хочу сделать то, что я не уверен, что можно сделать, и до сих пор я не нашел хороших ответов на мой вопрос.Restart Runnable Variables Android

Вот моя ситуация:
- я реализовал Timer как Handler, который имеет Runnable, который называет себя каждые 1s.
- Мне нужно реализовать такой метод, как Timer.restart(), который может перезагрузить параметры Runnable's.

Вот мой код, чтобы вы могли видеть его, и лучше понять, что я пытался достичь

private Runnable rStartCPRTick = new Runnable() { 
    public int seconds = 0; 
    public int minutes = 0; 
    public int hours = 0; 

    @Override 
    public void run() { 
     if(++seconds%60 == 0) //increases the time by one second 
      if(++minutes%60 == 0) 
       hours++; 
     mActivity.updateCPRTime(formatHHMMSS(hours,minutes,seconds)); 
     mStartCodeHandler.postDelayed(this,1000); // tick again in 1s 
    } 

    public void restartCPRTick(){ 
      seconds = 0; 
      minutes = 0; 
      hours = 0; 
    } 
}; 

Мои работоспособным, я хочу, чтобы иметь возможность вызывать resetCPRTick() извне Runnable, а затем вызова запуска который начинается с самого начала.

Возможно ли такое?

Спасибо!

ответ

0

Ваш управляемый класс. Вы можете добавить любые нужные вам методы. Просто держите ссылку на него и вызовите метод, который делает это (для этого вы, вероятно, хотите сделать его внутренним классом, а не анонимным классом).

+0

Да, но, как вы можете видеть, это анонимный класс, но я думаю, что знаю решение. Я создам свой собственный подкласс Runnable, который имеет метод restart(), так что каждый класс, который реализует этот класс, должен будет переопределить этот метод. : D –

+0

Затем сделайте его полдень анонимным. Нет причин, по которым класс должен быть анонимным. –

+0

Да, но тогда у меня будет больше классов, мой способ, которым я это сделал, для подкласса требуется только 1, и это мой стиль кодирования, поэтому мне это нравится сейчас. –