--- title: Glossaire Android tags: glossaire, course, glossary --- :::info **A vous de completer ce glossaire, nous avons déjà mis quelques mots à définir, mais c'est votre glossaire de promo, ajouter ce que vous voulez d'utile.** Cliquez sur l'aide en haut pour des infos sur le formattage du texte en Markdown ::: ### Build System ?? ### Inflater Mécanisme de lecture des layouts XML et qui les parse en objets View pour qu'ils soient accessibles dans le code. ### Material Design Le material design est un ensemble de règles graphiques. (voir https://fr.wikipedia.org/wiki/Material_design) ### Live Data Le LiveData est une classe de détenteurs qui est lifecycle-aware ### Backstack Pile où l'on range les activités dans l'ordre dans lequel elles sont ouvertes. ### Kotlin Keywords - Pour faire un singleton : ```kotlin object foo() {} // avec foo = nom de votre classe ``` - Pour l'équivalent du `switch` : ```kotlin when (x) { n -> ...., else -> ...... } ``` - Pour *unwrap* une variable optionnelle : ```kotlin maVar?.let { ... } // ou maVar?.run { ... } ``` > [name=Anthony] Le run est pas fait pour unwrap, il ne retourne pas une variable non optionnel ce qui est carrément l'interet du unwrap :( Donc `let` only - Pour créer un POJO : ```kotlin= data class Customer(val name: String, val email: String, val company: String) ``` ### Data Binding Le binding dans le framework Android est le fait de lier la définition de l’interface de l’application au code. Cela permet au code de modifier l’interface dynamiquement et à l’interface d’envoyer des informations de saisies au code par exemple. ### Kotlin ![Kotlin](https://upload.wikimedia.org/wikipedia/commons/thumb/7/74/Kotlin-logo.svg/1200px-Kotlin-logo.svg.png =20x20) Kotlin est un langage de programmation orienté objet et fonctionnel, avec un typage statique qui permet de compiler pour la machine virtuelle Java, JavaScript, et vers plusieurs plateformes en natif ### Drawable Un drawable est un fichier ressource qui peut être une icône, une image sous la forme d'un SVG. On peut ensuite utiliser ce drawable dans un layout. ### MVVM Model View ViewModel C'est un design pattern qui permet de séparer la vue du model et de l'accès aux données en passant par la vue-modèle ### ORM Object Relationnel Mapping : est une interface entre le code métier et la base de données. Elle permet de transformer les données de résultat de requette SQL en objets utilisables dans le code métier. ### LifecycleOwner Un objet qui possède un lifecycle. ### ConstraintLayout ConstraintLayout permet de créer des présentations grandes et complexes avec une hiérarchie de vues flat (pas de groupes de vues imbriquées). Toutes les vues sont disposées en fonction des relations entre les vues frères et la disposition parent. ### String.xml Fichier XML contenant les textes de l'application et qui sont utilisables dans les layouts. ### Intent Permet de lancer l'activité ```kotlin startActivity(Intent(this, OtherActivity::class.java)) ``` ### Activity Composant de base des interfaces d'une application Android. ### Fragment Composant d'interface modulable et utilisable dans une activité ### ViewModel Classe permettant d'exposer des données qui serviront à la vue ### Lifecyle Cycle de vie d'une application qui passe par différents états. L'état d'une app peut changer régulièrement (l'utilisateur quitte, reçoit un appel, force la fermeture totale de l'app, ...) ![image alt](https://user.oc-static.com/upload/2017/08/07/15021123513098_android-states.png "Cycle de vie") <span style="display: block;text-align: center;">*++Cycles de vie d'une application Android++*</span> ### Navigation C’est la library navigation qui permet de créer facilement un chemin de navigation. Pour créer une navigation : * Ajouter les dépendances ```kotlin implementation "android.arch.navigation:navigation-fragment-ktx:$navigationVersion" implementation "android.arch.navigation:navigation-ui-ktx:$navigationVersion" ``` * Ajouter le graph de navigation * Ajouter une destination * Connecter le chemin (origine->destination) * Déclencher la navigation dans le code métier ```kotlin (view.findNavController().navigate(R.id.action_gameFragment_to_gameWonFragment) ``` ### NavHost Conteneur des fragments ### NavGraph Liaison entre les fragments ### NavController Contrôle les cycles de navigation dans le navHost ### Recycler view Une vue flexible pour fournir une fenêtre limitée dans un grand ensemble de données. Permet de charger uniquement les données nécessaires. <div style="display:flex"><img style="margin:auto" src="https://camo.githubusercontent.com/ab61bfaa48ce462b90332fc44fec498fa50ff92a/68747470733a2f2f63646e2d696d616765732d312e6d656469756d2e636f6d2f6d61782f3730302f312a79567579655f3453783259323470564f7030427935412e706e67" widht=350 height=300></div><span style="text-align:center;display:block;text-decoration:underline;font-style: italic;">Fonctionnement du Recylcler View</span> ### Coroutine Une coroutine est un modèle de conception simultané que vous pouvez utiliser sur Android pour simplifier le code qui s'exécute de manière asynchrone. Sur Android, les coroutines aident à résoudre deux problèmes principaux: * Gérez les tâches de longue durée qui pourraient autrement bloquer le thread principal et provoquer le gel de votre application. * Assurer la sécurité principale ou appeler en toute sécurité les opérations réseau ou disque à partir du thread principal. ### Thread C'est un processus que le système doit éxécuter. Elle est composée de plusieurs tâches qui seront réalisées les unes après les autres. (*Ex: Pendant un contrôle, un exercice représente un thread*) > [name=Anthony] Eh non, pendant un controle chaque eleve est un thread, et chaque exercice est une tache que l'éleve execute :) ### Multi-Thread ?? ### Jetpack Ensemble d'outils et de bibliothèques qui aident les développeurs à créer des app de qualité facilement. Ces bibliothèques permettent de faire des choses complexes en peu de code (comme la navigation par exemple) ### AndroidX L'espace de nom AndroidX comprend toutes les librairies <a href="#Jetpack">Jetpack</a> ### Architecture components ?? ### Room C'est l'<a href="#ORM">ORM</a> d'Android. Il permet d'utiliser la base SQLite d'une application Android. ### Repository Classe permettant de regrouper et d'abstraire l'accès aux données à partir de différentes sources. ### API REST C'est une interface de programmation d'application qui fait appel à des requêtes http (get, post, put, delete) pour connecter des services Cloud et interagir avec. ### Interface (POO) Protocole de communication entre 1 objet et 1 autre objet. Une interface contient uniquement des signatures de méthodes (pas de corps) ### Paradigme Une représentation d'un sujet, une manière de voir les choses, un modèle cohérent d'un sujet qui repose sur un fondement défini ### Permission explicite Autorisation de l'utilisateur au moment de l'utilisation de la fonctionnalité nécessitant l'autorisation (exemple: géolocalisation) ### Observable Objet mis sur écoute par un (ou plusieurs) autre objet(s) ### Vue Ensemble de code qui fait fonctionner une interface à l'écran. (XML + Code Kotlin) ### Binding C'est ce qui permet de lier l'XML et l'activité Kotlin ### DataBinding Accéder aux données du code directement dans la vue ### Serialisation Convertion d'un objet vers un format de données (Ex : JSON, XML, CSV) ### Deserialisation Convertion d'un format de données (Ex : JSON, XML, CSV) vers un objet ### Content Negociation Outil permettant d'appliquer la <a href="#Serialisation">sérialisation</a>/<a href="#Deserialisation">désérialisation</a>