Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
172 L’art du développement Android
Éviter les pièges
Les threads en arrière-plan ne sont pas de mignons bébés bien sages, même en passant par
le système des Handler d’Android. Non seulement ils ajoutent de la complexité, mais ils
ont un coût réel en termes de mémoire, de CPU et de batterie.
C’est pour cette raison que vous devez tenir compte d’un grand nombre de scénarios lorsque
vous les utilisez. Parmi eux :
● Les utilisateurs peuvent interagir avec l’interface graphique de votre activité pendant
que le thread en arrière-plan s’essouffle. Si son travail est altéré ou modifié par une
action de l’utilisateur, vous devez l’indiquer au thread. Les nombreuses classes du
paquetage java.util.concurrent vous aideront dans cette tâche.
● L’activité peut avoir été supprimée alors que le travail en arrière-plan se poursuit.
Après avoir lancé l’activité, l’utilisateur peut avoir reçu un appel téléphonique, suivi
d’un SMS ; il a éventuellement ensuite effectué une recherche dans la liste de ses
contacts. Toutes ces opérations peuvent suffire à supprimer votre activité de la
mémoire. Le prochain chapitre présentera les différents événements par lesquels passe
une activité ; vous devez gérer les bons et vous assurer de mettre correctement fin au
thread en arrière-plan lorsque vous en avez l’occasion.
● Un utilisateur risque d’être assez mécontent si vous consommez beaucoup de
temps CPU et d’autonomie de la batterie sans rien lui donner en retour. Tactiquement,
ceci signifie que vous avez tout intérêt à utiliser une ProgressBar ou tout autre moyen
de faire savoir à l’utilisateur qu’il se passe vraiment quelque chose. Stratégiquement,
cela implique que vous devez être efficace – les threads en arrière-plan ne peuvent pas
servir d’excuse à un code inutile et lent.
● Une erreur peut se produire au cours de l’exécution du traitement en arrière-plan –
pendant que vous récupérez des informations à partir d’Internet, le terminal peut
perdre sa connectivité, par exemple. La meilleure solution consiste alors à prévenir
l’utilisateur du problème via une Notification, puis à mettre fin au thread en arrièreplan.
Livre Android.book Page 172 Dimanche, 8. novembre 2009 12:23 12
Précédent

- 187/391

Suivant