2011-10-12 1 views
0

J'utilise un compte à rebours pour effectuer une tâche répétée. Je veux être sûr que ce que je fais est valide car je ne suis pas sûr si l'objet compte à rebours est détruit quand il expire. La même question s'applique si j'appelle la méthode d'annulation. Voici mon code:Utilisation légale du compte à rebours?

public class MyCount extends CountDownTimer 
    { 
     public MyCount(long millisInFuture, long countDownInterval) 
     { 
     super(millisInFuture, countDownInterval); 
     } 

     @Override 
     public void onFinish() 
     { 
     new myAsyncTask().execute(); 
     this.start(); 
     } 

     @Override 
     public void onTick(long millisUntilFinished) 
     { 
     } 
    } 
+0

Avez-vous essayé d'exécuter ce code? Et cela fonctionne-t-il comme prévu? J'ai vu des problèmes surgir lorsque .cancle() et .start() sont appelés depuis la classe CountDownTimer. Ce [post] (http://stackoverflow.com/questions/3138348/how-to-stop-cancel-android-countdowntimer) a également vu ce problème –

+0

Cela semble fonctionner correctement. Je suis juste préoccupé par le fait que l'objet a pu être libéré mais toujours en mémoire, marqué pour la récupération de place. –

Répondre

0

Ce que vous faites est bien. L'objet timer sera libéré uniquement lorsque l'objet n'est plus joignable. Autrement dit, vous pouvez appeler timer.start() plusieurs fois sur le même objet que vous faites. timer.cancel() ne libère pas non plus l'objet. Vous pouvez appeler timer.cancel(), puis appeler timer.start() pour réinitialiser le timer, le tout sur le même objet.