2011-12-22 1 views
1

Je ne comprends pas comment pause le counterdowntimer. J'ai un countdowntimer public:compte à rebours android attendre

public CountDownTimer myTimer = new CountDownTimer(300000, 1000) { 
    public void onTick(long millisUntilFinished) { 
     ... 
     setCurrentTime(currentTime); 
    } 
    public void onFinish() { 
     setCurrentTime("0"); 
    } 
}; 

je peux .start() et .cancel() par buttonclick, mais je ne peux pas .wait(). Dev Docs dit

Cette méthode ne peut être invoquée par un fil qui possède le contrôle de cet objet; voir notify() sur la façon dont un thread peut devenir le propriétaire d'un moniteur.

qu'est-ce que cela signifie?

J'ai essayé d'enregistrer millisUntilFinished dans une variable, mais comment puis-je redémarrer le timer à partir de cette valeur?

Y a-t-il une autre solution?

Répondre

0

Vous ne pouvez pas attendre() sur un objet à moins que le thread actuel ne possède le moniteur de cet objet. Pour ce faire, vous devez synchroniser dessus.

+0

comment puis-je synchroniser dessus? –

1

Vous pouvez mettre en œuvre une variable globale, par exemple, private Boolean pauseTimer=false; puis vérifiez onTick si la variable est vrai - et si elle est Invoquez ensuite SystemClock.sleep()

+0

est-ce que systemclock.sleep() retarde la dev? –

+0

Il met en pause le Thread, ainsi le Thread ne fait rien pour le moment donné. – Force

+0

c'est seulement un retard, il me demande un délai. comment puis-je rester en pause pendant la pause? –