JobScheduler – Codage en Flow

Depuis Android Oreo, les apps au repos ne peuvent plus faire tourner les services d’arrière-plan. Donc, si vous avez besoin d’effectuer des opérations même si votre app n’est pas en cours d’exécution au premier plan, vous devriez utiliser un JobScheduler à la place.
Dans cette vidéo, nous allons mettre en place un tel JobScheduler en créant une classe qui étend JobService, puis en la planifiant avec le JOB_SCHEDULER_SERVICE.
Dans la classe JobService, nous surchargeons onStartJob et onStopJob. Dans onStartJob, nous allons démarrer un thread d’arrière-plan pour effectuer certaines opérations (fausses) de longue durée. Dans onStopJob, nous annulons notre travail car le système libère le wakelock lorsque les critères de notre travail ne sont plus remplis (par exemple, nous avons besoin d’un réseau non mesuré et l’utilisateur désactive le WiFi). Dans ce cas, nous reprogrammerons notre tâche pour réessayer plus tard.
Lorsque nous planifions notre travail, nous passons un objet JobInfo au JobScheduler, qui définira dans quelles circonstances nous voulons que le système exécute notre travail. Ici, nous pouvons définir des critères comme setRequiresDeviceCharging, setRequiredNetworkType, setPeriodic et plus encore. Nous pouvons même le faire survivre aux redémarrages de l’appareil avec setPersisted.
Enfin, nous enregistrons notre JobService dans le manifeste avec la permission android.permission.BIND_JOB_SERVICE et le système lancera alors notre service au moment approprié, même si notre application n’est pas en cours d’exécution.

.