Bonnes feuilles : Développer pour l'Iphone et l'Ipad Gestion de la batterie

Suivi de l'état de la batterie

La propriété batteryLevel indique le niveau de charge de la batterie avec une valeur comprise entre 0.0 et 1.0 (100 %). Si ce niveau ne peut pas être évalué, la valeur est UIDeviceBatteryStateUnknown. La propriété batteryState indique si le périphérique n'est pas relié à une alimentation, si la batterie est en charge ou si celle-ci est pleine avec une valeur exprimée par les constantes UIDeviceBatteryState.

Si la propriété batteryMonitoringEnabled est positionnée à YES par l'application, celle-ci recevra des notifications des changements d'état de la batterie via l'observateur qu'elle aura placé, comme le montre la méthode viewDidLoad, toujours dans la classe RootViewController de l'exemple BatteryStatus :

 [NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(batteryLevelDidChange:)
name:UIDeviceBatteryLevelDidChangeNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(batteryStateDidChange:)
name:UIDeviceBatteryStateDidChangeNotification
object:nil];

Optimisation de la consommation

L'optimisation est peut-être la tâche la plus ingrate dans le cycle de développement : si l'application propose déjà un comportement acceptable, son résultat n'est souvent pas perçu immédiatement par l'utilisateur. Pourtant, si ce dernier apprend que votre application se lance plus rapidement ou bien consomme moins de batterie qu'une solution concurrente, vous aurez marqué de précieux points dans son esprit !

En plus des nombreux conseils évoqués tout au long de cet ouvrage pour économiser la mémoire, accélérer le chargement ou éviter des tâches inutiles, intéressons-nous plus particulièrement aux phénomènes de consommation électrique.

La plupart des services supposent l'activation de circuits dédiés. Ceux-ci peuvent s'avérer de gros consommateurs d'énergie. C'est en particulier le cas du récepteur GPS ou bien de la connectivité 3G, particulièrement lorsqu'il s'agit d'émettre des données. Il est donc recommandé de limiter aux strictes valeurs nécessaires la fréquence d'usage et la précision des services tels que la localisation ou le magnétomètre.

préservation de la batterie dans un échange de données
Préservation de la batterie dans un échange de données © Dunod


Comme l'illustre la figure 12.1, certains protocoles impliquent par ailleurs une activité plus large que le service proprement dit. Ainsi, pour économiser la batterie, il est préférable d'émettre rarement une grande quantité de données plutôt qu'émettre souvent quelques octets.

De manière similaire, il vaut mieux lancer de temps en temps des opérations lourdes que réaliser constamment des petites tâches : en effet, les plages d'inactivité du système lui permettent de placer en fonctionnement économique les composants qui disposent d'un tel mode.

Tout l'art du développeur est de maintenir la réactivité de l'application pendant ces opérations avec la programmation parallèle.