oui la minuterie de java peut être utilisée , mais comme la question demande une meilleure façon (pour mobile). Ce qui est expliqué ici .
Pour le bien de StackOverflow:
Puisque Timer crée un nouveau thread, il peut être considéré comme lourd,
si tout ce dont vous avez besoin est d'obtenir un rappel pendant que l'activité est en cours d'exécution, un gestionnaire peut être utilisé en conjonction avec un
Exécutable :
private final int interval = 1000; // 1 Second
private Handler handler = new Handler();
private Runnable runnable = new Runnable(){
public void run() {
Toast.makeText(MyActivity.this, "C'Mom no hands!", Toast.LENGTH_SHORT).show();
}
};
...
handler.postAtTime(runnable, System.currentTimeMillis()+interval);
handler.postDelayed(runnable, interval);
ou un message
private final int EVENT1 = 1;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case Event1:
Toast.makeText(MyActivity.this, "Event 1", Toast.LENGTH_SHORT).show();
break;
default:
Toast.makeText(MyActivity.this, "Unhandled", Toast.LENGTH_SHORT).show();
break;
}
}
};
...
Message msg = handler.obtainMessage(EVENT1);
handler.sendMessageAtTime(msg, System.currentTimeMillis()+interval);
handler.sendMessageDelayed(msg, interval);
en passant, cette approche peut être utilisée si vous souhaitez exécuter un morceau de code dans le thread d'interface utilisateur à partir d'un autre thread.
si vous avez besoin d'un rappel même si votre activité n'est pas en cours, vous pouvez utiliser un AlarmManager