web-dev-qa-db-fra.com

Quand Android passe-t-il en mode veille?

Je cherchais SO et web mais je n'ai pas trouvé de réponse suffisante à ma question particulière. Ok nous y voilà:

Chaque utilisateur peut modifier le délai d'expiration de l'écran sur Android. (lorsque l'écran s'éteint lorsqu'il est inactif pendant __ secondes/minutes - le choix des utilisateurs). Mais l'utilisateur ne peut modifier que le délai d'expiration de l'écran et non le moment où l'appareil se met réellement en veille. J'ai trouvé ici ce qui se passe lorsque l'appareil se met en veille: (réponse vraiment sympa de CommonsWare) Android Sleep/Standby Mode

Ok ma question est simple. Comment savoir quand mon téléphone se mettra en veille? Va-t-il s'endormir immédiatement après avoir éteint l'écran? Restera-t-il "éveillé" un certain temps après la désactivation de l'écran? Et le plus important: le mode veille d'un appareil particulier varie-t-il d'un appareil de marque (comment le fabricant l'implémente-t-il) ou cela dépend de la version ROM (par exemple, tous ICS les appareils alimentés se mettront en veille X secondes après la désactivation de l'écran)?

20
rootpanthera

Vous ne pouvez jamais vraiment être sûr que l'appareil s'est endormi. Au mieux, je peux vous donner une liste de choses qui garantiraient que l'appareil ne s'est pas endormi:

  • L'écran est allumé - Nécessite CPU et GPU, et donc RAM, pour rester actif
  • Toute application disposant d'un wakelock - Même les wakelocks les plus bas gardent le CPU allumé, bien que l'écran puisse être éteint

En dehors de cela, rien ne garantit que l'appareil se mettra en veille n secondes après la désactivation de l'écran, même si aucun verrou de réveil n'est maintenu. C'est jusqu'à l'OEM, et ils peuvent changer cela.

Gardez à l'esprit que les appareils Android ont la possibilité de garder l'appareil déverrouillé pendant un certain temps après la mise en veille de l'écran.

26
Raghav Sood

Il y a une petite différence de consommation d'énergie lorsque vous comparez un téléphone avec des ordinateurs portables. La plupart du temps, les ordinateurs portables sont alimentés directement par le chargeur. (Généralement, nous portons la charge avec un ordinateur portable). Les mobiles fonctionnent principalement sur batterie. (Rarement, nous portons un chargeur avec nous).

En gardant cela à l'esprit, Android a été conçu de telle manière que le téléphone ne consommera pas la batterie si l'utilisateur n'interagit pas avec le téléphone. Ceci augmente le temps de sauvegarde de la batterie pour l'utilisateur .

C'est pourquoi lorsque LCD est éteint (cela signifie que l'utilisateur n'interagit pas avec le téléphone), avec en une fraction de seconde, le CPU passera également en mode (mode veille) où il fait un travail minimal et économise l'énergie de la batterie. Lorsque le CPU est en mode veille, il accepte uniquement les commandes de RIL (couche d'interface radio) qui est essentiellement SMS et les fonctions d'appel et les alarmes. À part ce CPU, il cessera d'exécuter d'autres fonctions des applications.

Remarque: Si une application souhaite disposer de temps CPU pour son travail d'urgence lorsque le CPU est en mode veille, elle peut demander du temps CPU en utilisant WAKE LOCKS.

Par exemple: l'application MP3 doit continuer à lire des chansons dans son service, même si l'utilisateur a désactivé l'écran LCD. Cela signifie que le service de l'application MP3 a demandé du temps CPU en utilisant WAKE LOCKS.

Votre question: Comment savoir quand mon téléphone se mettra en veille? - Ans: Simple, il passe en mode veille lorsque LCD l'alimentation est coupée, avec en fraction de secondes.

Votre question: Le mode veille d'un appareil particulier varie-t-il d'un appareil de marque à l'autre - Ans: Puisque Android est open source, n'importe quel OEM peut prendre le pilote couche, qui est une licence GPU et peut modifier le lecteur de Power Manager pour se comporter différemment.Tous ces modes de veille et de verrouillage de réveil sont finalement sous le contrôle du pilote Power Manager de la couche du noyau Linux.

9
user1923551

pour tester le mode veille/somnoler dans Android 6.0, vous devez utiliser les commandes suivantes:

$ adb Shell dumpsys battery unplug
$ adb Shell dumpsys deviceidle step

plus d'informations voir ici: Optimisation pour Doze et Veille d'application

5
ant