web-dev-qa-db-fra.com

Android - Exécution d'une tâche en arrière-plan toutes les 15 minutes, même lorsque l'application n'est pas en cours d'exécution

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?

17
DijkeMark

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

}
22
wtsang02

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 

2
pvllnspk

Vous pouvez également y parvenir via un SyncAdapter . Voici un exemple à regarder et à inspirer.

Exemple SyncAdapter

1
Benoit

La meilleure approche a été présentée à Google I/O 2018 - WorkManager .

Vous pouvez trouver la documentation ici .

0
mtwain