48
Développement Android Cycle de Vie, Composants Principaux, Comportement… Formation Mobile 27 Aout au 1 Septembre 2015 Dr. Lilia SFAXI www.liliasfaxi.wix.com/liliasfaxi Slide 1

P1 introduction à android

Embed Size (px)

Citation preview

Développement Android Cycle de Vie, Composants Principaux, Comportement…

Formation Mobile 27 Aout au 1 Septembre 2015

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 1

ENVIRONNEMENT DE DÉVELOPPEMENT ANDROID Développement Android

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 2

Android pour le Développement Mobile

•  Android fait partie d’une nouvelle vague de SE conçus pour du HW plus performant •  Windows Phone •  BlackBerry OS •  Apple iPhone

•  Android se distingue par son offre d’environnement de Dév. Ouvert •  Basé sur le noyau open source Linux •  Accès complet aux ressources HW •  Applications natives ou tierces sont au même niveau •  Utilisation de la même API •  Exécution sur le même runtime

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 3

Environnement de Développement Android

Android…

“The first truly open and comprehensive platform for mobile devices, all of the software to run a mobile phone but without the proprietary obstacles

that have hindered mobile innovation."

Andy Rubin Cofondateur et ancien CEO de Danger Inc. et du Système d’Exploitation Android Inc.

http://googleblog.blogspot.com /2007/11/wheres-my-gphone.html

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 4

Environnement de Développement Android

Android est:

•  Une combinaison de trois éléments: 1.  Un système d’exploitation open source pour terminaux mobiles 2.  Une plateforme de développement open source pour créer des

applications mobiles 3.  Terminaux, particulièrement téléphones mobiles, qui exécutent

le système d’exploitation Android et les applications mobiles conçues pour ce système

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 5

Environnement de Développement Android

Distribution des Versions (Avril 2015)

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 6

Environnement de Développement Android

https://developer.android.com/about/dashboards/index.html

ARCHITECTURE ANDROID Développement Android

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 7

Android SW Stack

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 8

Architecture Android

SW Stack (1): Linux Kernel

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 9

Architecture Android

Linux kernel (version 3.4 pour Lollipop 5.1) •  Offre les services fondamentaux : hardware drivers, process & memory

management, security, network, power management. •  Offre une couche d’abstraction entre le HW et le reste de la pile logicielle.

SW Stack (2): Android Runtime

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 10

Architecture Android

Android Runtime •  Incluant les librairies fondamentales et la machine virtuelle ART (Android

RunTime, remplaçant Dalvik officiellement depuis la version Lollipop). •  Permet l’exécution des application et représente la base du framework applicatif .

SW Stack (3): Libraries

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 11

Architecture Android

Android Libraries •  Linux kernel Libraries : diverses

librairies fondamentales de C/C++ : •  Media Framework : lecture audio /

vidéo •  Surface manager : gestion de

l’affichage •  Graphics libraries (SGL & OpenGL):

affichage 2D et 3D •  SQLite pour le support natif des

bases de données •  SSL & WebKit pour la navigation sur

internet avec le support SSL

SW Stack (4): Applications Framework

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 12

Architecture Android

Applications Framework •  Fournit les classes qui seront utilisées pour la création d’applications Android. •  Représente une abstraction pour les accès HW et prend en charge la gestion de

l’interface utilisateur et des ressources de l’application.

SW Stack (5): Applications

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 13

Architecture Android

Applications •  Toutes les applications, native ou tierces, sont basées sur la même API. •  La couche application s’ exécute sur un runtime Android en utilisant les classes

et services de fournis par la couche « Applications Framework ».

CONDUITE D’UN PROJET D’APP. ANDROID Développement Android

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 14

Point de Départ: IHM & UX

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 15

Conduite d’un Projet D’App. Android

Voir http://developer.android.com/training/design-navigation/wireframing.html

Étape 1: Planifier la Navigation entre Screens

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 16

Conduite d’un Projet D’App. Android

Étape 2: Choisir les Patrons de Navigation

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 17

Conduite d’un Projet D’App. Android

Étape 4: Définir les Screens (Wireframing)

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 18

Conduite d’un Projet D’App. Android

Étape 5: Raffiner chaque Screen

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 19

Conduite d’un Projet D’App. Android

Attention: Il faut respecter les patrons de conception Android!

Étape 6: Il Suffit de Coder…

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 20

Conduite d’un Projet D’App. Android

Liens Utiles

http://developer.android.com http://www.android-app-patterns.com/ http://www.androidviews.net

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 21

Conduite d’un Projet D’App. Android

STRUCTURE D’UNE APPLICATION ANDROID Développement Android

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 22

Environnement de Développement

•  Langages De Développement : •  Lang. Java avec Android SDK (Software Dev. Kit) •  Lang. C++ avec Android NDK (Native Dev. Kit)

•  Utilisation d'un IDE est recommandée •  Android Studio (IntelliJ-IDEA adapté pour Android) •  Eclipse (avec le plugin ADT) •  Autres IDE peuvent être utilisés tels que NetBeans

•  Un projet d’une application Android possède une arborescence spécifique.

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 23

Structure d’une Application Android

Arborescence d’un Projet

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 24

Structure d’une Application Android

Bibliothèques du module principal

Tests de votre application

Code source Java des applications

Ressources utilisées par l’application

Images (PNG, JPEG ou GIF) et fichiers XML décrivantles

formes

Fichiers XML représentant l’interface d’une page ou d’une partie de page de

votre application

Fichiers XML décrivant les menus

Icônes de lancement de l’application (classés par résolution d’écran)

Dossier contenant les fichiers décrivant des valeurs utilisées dans l’application.

Ex : strings.xml pour les chaînes, arrays.xml pour les tableaux…

Fichier de contrôle de l’application, décrivant sa nature , ses composants et les permissions associées

Résolutions, Densités, Différents Écrans

•  Iconographie sous Android •  http://developer.android.com/design/style/iconography.html

•  Android et les icônes, mdpi, hdpi, xhdpi, xxhdpi •  http://labs.excilys.com/2013/07/18/android-et-les-icones-mdpi-

hdpi-xhdpi-xxhdpi/

•  Support de plusieurs écrans sous Android •  http://developer.android.com/guide/practices/

screens_support.html

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 25

Structure d’une Application Android

CYCLE DE VIE D’UNE APPLICATION ANDROID Développement Android

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 26

Cycle de Vie

•  Les composants (vues) d’une application ont un cycle de vie •  Un début quand Android les instancie pour répondre aux Intents •  Une fin quand les instances sont détruites

•  Entre les deux, où ils peuvent être: •  Actifs ou inactifs •  Visibles ou invisibles

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 27

Cycle de Vie d’une Application Android

Vie d’une Application: Actif/Inactif

Visible / Invisible Début Fin

Pile d’Activités

•  Les activités dans une application sont gérées sous forme de Pile

•  Quand une nouvelle activité démarre, elle est placée en haut de la pile et devient l’activité en exécution

•  L’ activité précédente reste en dessous dans la pile •  Elle ne revient au premier plan que si la nouvelle activité est fermée

•  Si l’utilisateur clique sur le bouton Retour du téléphone l’activité suivante dans la pile devient active

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 28

Cycle de Vie d’une Application Android

Pile d’Activités

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 29

Cycle de Vie d’une Application Android

États d’une Activité

•  Active ou en Exécution •  Elle est au premier plan de l’écran (donc en haut de la pile) •  C’est l’activité ciblée par les actions de l’utilisateur

•  En Pause •  A perdu le focus, mais est encore partiellement visible •  Une autre activité est en haut de la pile, mais elle est soit

transparente, soit ne couvre pas tout l’écran

•  Arrêtée •  Complètement recouverte par une autre activité •  Ses informations sont encore chargées, mais elle n’est plus visible •  Peut être tuée par le système si besoin de mémoire

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 30

Cycle de Vie d’une Application Android

Évènements du Cycle de Vie d’une Activité

•  Quand une activité passe d’un état à un autre, le framework Android appelle les méthodes de transition correspondantes (pattern IoC) : •  void onCreate(Bundle savedInstanceState) : obligatoire •  void onStart() •  void onRestart() •  void onResume() •  void onPause() : recommandée •  void onStop() •  void onDestroy()

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 31

Cycle de Vie d’une Application Android

Évènements du Cycle de Vie d’une Activité

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 32

Cycle de Vie d’une Application Android

Méthodes de Transition (1/6): onCreate

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 33

Cycle de Vie d’une Application Android

onCreate •  Appelée à la création d’une activité •  Initialisation de tous les éléments •  Un bundle est passé à cette méthode, contenant l’état précédent de l’activité •  Toujours suivie de onStart

Méthodes de Transition (2/6): onStart / onRestart

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 34

Cycle de Vie d’une Application Android

onStart •  Appelée juste avant que l’activité ne devienne visible, •  Suivie de

•  onResume si l’activité revient en premier plan •  onStop si l’activité est cachée

onRestart •  Appelée quand l’activité va redémarrer après avoir été stoppée •  Toujours suivie de onStart

Méthodes de Transition (3/6): onResume

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 35

Cycle de Vie d’une Application Android

onResume •  Appelée juste avant que l’activité ne commence interagir avec l’utilisateur •  A ce point, l’activité est en haut de la pile •  Toujours suivie de onPause

Méthodes de Transition (4/6): onPause

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 36

Cycle de Vie d’une Application Android

onPause •  Appelée quand le système va démarrer une autre activité •  Utilisée typiquement pour

•  Consigner les données non sauvegardées •  Arrêtées les animations ou tout ce qui consomme de la mémoire...

•  Ne doit pas consommer beaucoup de temps, car l’activité suivante ne va démarrer que si cette méthode retourne

•  Suivie de : •  onResume si l’activité est rechargée en premier plan •  onStop si l’activité devient invisible

•  Dans cet état, l’activité peut être tuée par le système

Méthodes de Transition (5/6): onStop

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 37

Cycle de Vie d’une Application Android

onStop •  Appelée quand l’activité n’est plus visible à l’utilisateur •  Peut arriver si:

•  L’activité est détruite •  Une autre activité a repris son exécution et l’a recouverte

•  Suivie par: •  onRestart si l’activité recommence à interagir avec l’utilisateur •  onDestroy si l’activité va disparaître

•  Dans cet état, l’activité peut être tuée par le système

Méthodes de Transition (6/6): onDestroy

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 38

Cycle de Vie d’une Application Android

onDestroy •  Appelée quand l’activité est détruite •  Dernier appel que l’activité va recevoir •  Peut intervenir si:

•  L’ activité se termine (appel de finish) •  Le système détruit temporairement cette instance de l’activité pour gagner de l’espace

•  On peut distinguer entre ces deux scénarios avec la méthode isFinishing() •  Dans cet état, l’activité peut être tuée par le système

Complément d’Information

•  Le site http://developer.android.com

•  Propose un exemple plus détaillé sur le LifeCycle avec plusieurs activités. A tester chez vous.

•  Page LifeCycle : •  http://developer.android.com/training/basics/activity-lifecycle/index.html

•  Lien vers le code source : •  http://developer.android.com/shareables/training/ActivityLifecycle.zip

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 39

Cycle de Vie d’une Application Android

ÉLÉMENTS DE BASE D’UNE APPLICATION ANDROID Développement Android

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 40

Activity (Rappel)

•  Une Activity est un composant d'application •  Fournit un écran avec lequel les utilisateurs peuvent interagir avec

l’application dans le but de faire quelque chose •  Téléphoner, prendre une photo, envoyez un e-mail ...

•  Chaque activity est associée à une fenêtre qui représente l’interface utilisateur •  La fenêtre remplit généralement l'écran, •  Peut être plus petite que l'écran et le flouter au-dessus des autres

fenêtres.

•  L’ enchaînement des activités (fenêtres) donne une application •  Utilisation des intents

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 41

Éléments de Base d’une Application Android

Activity (Rappel)

•  Classe qui hérite de Activity •  Implémente obligatoirement la méthode onCreate()

•  Doit être déclarée dans le fichier manifest.xml

•  Associée à un ou plusieurs fichiers layout •  Fichier XML qui décrit les composants graphiques de l’interface ainsi que

leurs dispositions •  I l est aussi possible de créer des éléments graphiques dynamiquement, par

programmation (@Runtime)

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 42

Éléments de Base d’une Application Android

Disposition des Éléments Graphiques

•  Layout XML •  Fichier de spécification des composants graphiques d’une application

(widgets)e t de leurs conteneurs ( layout) décrit en XML

•  View •  Classe de base pour la création des interfaces graphiques •  Classe mère de tous les widgets utilisés pour créer des composants

graphiques interactifs (boutons, champs de texte, de saisie…) •  I l est possible d’ajouter des vues:

•  @Runtime: dans le code Java de l’activité •  Statiquement: dans le code XML du layout

•  ViewGroup •  Classe de base pour tous les Layouts (dispositions): conteneurs invisibles

rassemblant plusieurs Views ou ViewGroup

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 43

Éléments de Base d’une Application Android

Intents

•  Un Intent : Un message asynchrone qui permet à un composant d'une application de demander une fonctionnalité à partir d'un autre composant Android.

•  L’ autre composant peut appartenir à : •  La même application •  Une application tierce •  Au framework Android

•  Exemple : Une activity peut démarrer une autre application pour prendre une photo

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 44

Éléments de Base d’une Application Android

Enchaînement des Activités via les Intents

•  On peut démarrer une autre activity via la méthode startActivity •  Prend en argument un intent qui décrit l ’activity qu’on souhaite démarrer //code java, dans l'activité appelante Intent myIntent = new Intent

(this, NewActivity.class); myIntent.putExtra("cle", "valeur"); startActivity(myIntent);

•  Pour récupérer le contenu des variable depuis l’Intent : //code java, dans l'activity appelée getIntent().getStringExtra("cle")

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 45

Éléments de Base d’une Application Android

Fragments

•  Un fragment représente le comportement d'une partie d'une vue dans une Activity •  Il possède son propre cycle de vie, mais est intiment lié à

l'activité qui le contient (Expl : si l’activité est en pause à fragment en pause)

•  Doit obligatoirement être lié à une activity, mais peut être réutilisé par une autre

•  Un fragment peut être ajouté à la BackStack •  Disponible depuis Android 3.0 (API 11)

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 46

Éléments de Base d’une Application Android

Fragments

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 47

Éléments de Base d’une Application Android

Autres Composants Android

•  Une application Android est formée d’un ensemble de composants déclarés dans le Manifest

•  Un composant peut être: •  Activity •  Broadcast Receiver •  Content Provider •  Service

•  A voir ultérieurement…

Dr. L i l i a SFAXI www. l i l i asfax i .wix .com /l i l i asfax i

S l ide 48

Éléments de Base d’une Application Android