Je dois créer une tâche en arrière-plan qui s'exécute toutes les 10/15 minutes (peu importe, que ce soit bien ou non), même lorsque l'application n'est pas en cours d'exécution.
Comment puis-je accomplir cela? Je n'arrive pas à comprendre pourquoi.
J'ai lu que je pourrais utiliser une sorte de fonctionnalité runnable () ou utiliser des services d'arrière-plan ou AlarmManager. Je pensais à un service d'arrière-plan, car il doit également être effectué lorsque l'application elle-même n'est pas en cours d'exécution.
Quelle est la meilleure façon de faire cela et comment pourrais-je le faire?
Vous avez déterminé la durée (intervalle) d'exécution d'un fragment de code, il est préférable d'utiliser AlarmManager car son efficacité énergétique est accrue. Si votre application a besoin d'écouter un événement, le service est ce qu'il vous faut.
public static void registerAlarm(Context context) {
Intent i = new Intent(context, YOURBROADCASTRECIEVER.class);
PendingIntent sender = PendingIntent.getBroadcast(context,REQUEST_CODE, i, 0);
// We want the alarm to go off 3 seconds from now.
long firstTime = SystemClock.elapsedRealtime();
firstTime += 3 * 1000;//start 3 seconds after first register.
// Schedule the alarm!
AlarmManager am = (AlarmManager) context
.getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime,
600000, sender);//10min interval
}
Gestionnaire d'alarmes (service système) vs service à distance avec implémentation d'alarme interne (processus séparé)?
Alarm Manager est votre choix, car il a déjà tout ce dont vous avez besoin, il vous suffit de définir des intervalles d'alarme
Vous pouvez également y parvenir via un SyncAdapter . Voici un exemple à regarder et à inspirer.
La meilleure approche a été présentée à Google I/O 2018 - WorkManager .
Vous pouvez trouver la documentation ici .