09.02.2017 Views

creez-des-applications-pour-android

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

5 Concepts avancés<br />

5.1 Le travail en arrière-plan<br />

L’un de vos objectifs prioritaires sera de travailler sur la réactivité de vos <strong>applications</strong>, c’est-àdire<br />

de faire en sorte qu’elles ne semblent pas molles ou ne se bloquent pas sans raison apparente<br />

pendant une durée significative. En effet, l’utilisateur est capable de détecter un ralentissement<br />

s’il dure plus de 100 ms, ce qui est un laps de temps très court. Pis encore, Android lui-même peut<br />

déceler quand votre application n’est pas assez réactive, auquel cas il lancera une boîte de dialogue<br />

qui s’appelle ANR et qui incitera l’utilisateur à quitter l’application. Il existe deux évènements qui<br />

peuvent lancer <strong>des</strong> ANR :<br />

1. L’application ne répond pas à une impulsion de l’utilisateur sur l’interface graphique en<br />

moins de cinq secon<strong>des</strong>.<br />

2. Un Broadcast Receiver s’exécute en plus de dix secon<strong>des</strong>.<br />

C’est <strong>pour</strong>quoi nous allons voir ici comment faire exécuter du travail en arrière-plan, de façon à<br />

exécuter du code en parallèle de votre interface graphique, <strong>pour</strong> ne pas la bloquer quand on veut<br />

effectuer de grosses opérations qui risqueraient d’affecter l’expérience de l’utilisateur.<br />

*[ANR] : Application Not Responding<br />

5.1.1 La gestion du multitâche par Android<br />

Comme vous le savez, un programme informatique est constitué d’instructions <strong>des</strong>tinées au processeur.<br />

Ces instructions sont présentées sous la forme d’un code, et lors de l’exécution de ce<br />

code, les instructions sont traitées par le processeur dans un ordre précis.<br />

Tous les programmes Android s’exécutent dans ce qu’on appelle un processus. On peut définir<br />

un processus comme une instance d’un programme informatique qui est en cours d’exécution. Il<br />

contient non seulement le code du programme, mais aussi <strong>des</strong> variables qui représentent son état<br />

courant. Parmi ces variables s’en trouvent certaines qui permettent de définir la plage mémoire<br />

qui est mise à la disposition du processus.<br />

Pour être exact, ce n’est pas le processus en lui-même qui va exécuter le code, mais l’un de ses<br />

constituants. Les constituants <strong>des</strong>tinés à exécuter le code s’appellent <strong>des</strong> threads (« fils d’exécution<br />

» en français). Dans le cas d’Android, les threads sont contenus dans les processus. Un processus<br />

peut avoir un ou plusieurs threads, par conséquent un processus peut exécuter plusieurs<br />

portions du code en parallèle s’il a plusieurs threads. Comme un processus n’a qu’une plage mémoire,<br />

alors tous les threads se partagent les accès à cette plage mémoire. On peut voir à la figure<br />

suivante deux processus. Le premier possède deux threads, le second en possède un seul. On peut<br />

voir qu’il est possible de communiquer entre les threads ainsi qu’entre les processus.<br />

327

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!