Je veux exécuter périodiquement une méthode dans une activité Android qui met à jour un certain champ après x secondes. Je sais que cela peut être fait dans timerTask mais quelle est la meilleure façon de le faire? soit utile.
Vous devez utiliser Handler
et sa fonction postDelayed
. Vous pouvez trouver un exemple ici: Répéter une tâche avec un délai?
Vous pouvez également le faire par CountDownTimer
CountDownTimer countDownTimer;
public void usingCountDownTimer() {
countDownTimer = new CountDownTimer(Long.MAX_VALUE, 10000) {
// This is called after every 10 sec interval.
public void onTick(long millisUntilFinished) {
setUi("Using count down timer");
}
public void onFinish() {
start();
}
}.start();
}
et onPause ()
@Override
protected void onPause() {
super.onPause();
try {
countDownTimer.cancel();
} catch (Exception e) {
e.printStackTrace();
}
}
Vous pouvez utiliser ci-dessous Android classes:
1.Manipulateur
Handler handler=new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//your code
handler.postDelayed(this,20000);
}
},20000);
2.AlarmManager
AlarmManager alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
// Set the alarm to start at approximately 2:00 p.m.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
Intent intent = new Intent(HomeActivity.this, Yourservice.class);
alarmIntent = PendingIntent.getService(HomeActivity.this, 0, intent, 0);
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 600*1000, alarmIntent);