## Mettre en pause les traitements consommateurs lorsque l'application est en arrière-plan ### Identifiants // TODO ### Catégories | Cycle de vie | Tiers | Responsable | |:---------:|:----:|:------------------------:| | 2. Conception | Utilisateur/Terminal | Developpeur/Développeuse | ### Indications | Degré de priorité | Mise en oeuvre | Impact écologique | |:-------------------:|:-------------------------:|:---------------------:| | 3 | 4 | 3 | | Ressources Economisées | |:----------------------:| | Mémoire / Batterie | ### Description Lorsqu'une personne navigue entre plusieurs applications sur son mobile, les applications basculent entre premier plan et arrière-plan. Lorsqu'une application qui effectue un traitement consommateur en mémoire passe en arrière-plan, il convient de s'appuyer sur son cycle de vie pour réduire l'impact de ce traitement sur la batterie du téléphone. * Dans la fonction `onPause`, l'activité est toujours visible à l'écran, mais l'utilisateur ne peut plus interagir avec. - Dans la fonction `onStop`, l'activité n'est plus visible. Au sein de ses deux callbacks, une bonne pratique est de libérer ou d'ajuster les ressources consommatrices initialisées précédemment. Quelques exemples de traitements consommateurs : * L'affichage d'une animation. * La lecture d'une vidéo ou d'un son. * L'usage des capteurs du téléphone : le GPS, le gyroscope. * L'usage de protocol de connectivité : Bluetooth, Wifi, NFC, etc. ### Exemple * Soit une application utilisant la position GPS du téléphone. Lorsque l'activité n'est plus visible, il faut désactiver la mise à jour de la position dans la fonction `onStop`. Si cela n'est pas possible, une alternative est de changer la granularité de mise à jour de la position de "fine" à "grossière". * Soit une activité `PhotoActivity` qui utilise l'appareil photo. Lorsqu'une autre activité prend le focus sur celle-ci par exemple sous forme de modale, mais que la première activité restent visible dessous (elle est donc dans l'état `PAUSED`), il faut appeler la fonction `camera?.release()` dans la callback `onPause`. ### Principe de validation | Le nombre ... | est inférieur ou égal à | |-----------------------------------------------------------------------------------------------------------|:-----------------------:| | de traitements lourds pour lesquels la mémoire n'est pas libérée dans les fonctions `onPause` ou `onStop` | 0 |