La solution que vous utiliserez dépend en fait du temps d'attente nécessaire entre chaque exécution de votre fonction.
Si vous attendez plus de 10 minutes, je vous conseille d'utiliser AlarmManager
.
// Some time when you want to run
Date when = new Date(System.currentTimeMillis());
try {
Intent someIntent = new Intent(someContext, MyReceiver.class); // intent to be launched
// Note: this could be getActivity if you want to launch an activity
PendingIntent pendingIntent = PendingIntent.getBroadcast(
context,
0, // id (optional)
someIntent, // intent to launch
PendingIntent.FLAG_CANCEL_CURRENT // PendingIntent flag
);
AlarmManager alarms = (AlarmManager) context.getSystemService(
Context.ALARM_SERVICE
);
alarms.setRepeating(
AlarmManager.RTC_WAKEUP,
when.getTime(),
AlarmManager.INTERVAL_FIFTEEN_MINUTES,
pendingIntent
);
} catch(Exception e) {
e.printStackTrace();
}
Une fois que vous avez diffusé le message ci-dessus Intent
Vous pouvez recevoir votre Intent
en mettant en œuvre un BroadcastReceiver
. Notez que cela devra être enregistré soit dans votre manifeste d'application, soit par le biais de l'option context.registerReceiver(receiver, intentFilter);
méthode. Pour plus d'informations sur BroadcastReceiver
Veuillez vous référer à la documentation officielle. .
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
System.out.println("MyReceiver: here!") // Do your work here
}
}
Si vous attendez moins de 10 minutes, je vous conseille d'utiliser une Handler
.
final Handler handler = new Handler();
final int delay = 1000; // 1000 milliseconds == 1 second
handler.postDelayed(new Runnable() {
public void run() {
System.out.println("myHandler: here!"); // Do your work here
handler.postDelayed(this, delay);
}
}, delay);