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).