Dans android pour répéter une action à intervalles réguliers on peut utiliser timertask , mais pour d’obscures raisons , il m’est arrivé d’avoir des problèmes avec ce timer.
Du coup, une solution qui semble fonctionner à merveille est l’utilisation d’un handler et d’un runnable :
private Handler myHandler;
private Runnable myRunnable = new Runnable() {
@Override
public void run() {
// Code à éxécuter de façon périodique
myHandler.postDelayed(this,500);
}
};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myLayout);
myHandler = new Handler();
myHandler.postDelayed(myRunnable,500); // on redemande toute les 500ms
}
public void onPause() {
super.onPause();
if(myHandler != null)
myHandler.removeCallbacks(myRunnable); // On arrete le callback
}
On demande simplement au handler un appel retardé du runnable (ici 500ms) puis dans le runnable on répète cette opération.
On rentre ainsi dans une « boucle infinie » qui nous permet d’exécuter le code du runnable à intervale régulier.
Ne pas oublier de stopper le tout avant de quitter l’activité (ou avant) via removeCallback(Runnable).