2.7 KiB
2.7 KiB
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, ces 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'étatPAUSED
), il faut appeler la fonctioncamera?.release()
dans la callbackonPause
.
Principe de validation
Le nombre ... | est inférieur ou égal à |
---|---|
de traitement lourds pour lesquels la mémoire n'est pas libéré dans les fonctions onPause ou onStop |
0% |