Mettre en pause les traitements consommateurs lorsque l'application est en arrière-plan
Identifiants
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 |