Chapitre 4. Le modèle de composants



Documents pareils
Votre premier projet Android

Once the installation is complete, you can delete the temporary Zip files..

WEB page builder and server for SCADA applications usable from a WEB navigator

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

Tutorial pour une application simple

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

calls.paris-neuroscience.fr Tutoriel pour Candidatures en ligne *** Online Applications Tutorial

Paxton. ins Net2 desktop reader USB

lundi 3 août 2009 Choose your language What is Document Connection for Mac? Communautés Numériques L informatique à la portée du Grand Public

DOCUMENTATION - FRANCAIS... 2

Cedric Dumoulin (C) The Java EE 7 Tutorial

Contents Windows

Android et le Cloud Computing

Instructions Mozilla Thunderbird Page 1

Vanilla : Virtual Box

WiFi Security Camera Quick Start Guide. Guide de départ rapide Caméra de surveillance Wi-Fi (P5)

How to Login to Career Page

Le Cloud Computing est-il l ennemi de la Sécurité?

Android 4 Les fondamentaux du développement d'applications Java

Programmation des applications mobiles avec Android. 1 Inspiré du cours de Olivier Le Goaer

DOCUMENTATION - FRANCAIS... 2

TABLE DES MATIERES A OBJET PROCEDURE DE CONNEXION

Thank you for choosing the Mobile Broadband USB Stick. With your USB Stick, you can access a wireless network at high speed.

3615 SELFIE. HOW-TO / GUIDE D'UTILISATION

Micro-ordinateurs, informations, idées, trucs et astuces utiliser le Bureau à distance

Projet Android (LI260) Cours 2

XtremWeb-HEP Interconnecting jobs over DG. Virtualization over DG. Oleg Lodygensky Laboratoire de l Accélérateur Linéaire

Guide d'installation rapide TFM-560X YO.13

TP SIN Programmation sur androïde Support : eclipse

The new consumables catalogue from Medisoft is now updated. Please discover this full overview of all our consumables available to you.

DOCUMENTATION MODULE BLOCKCATEGORIESCUSTOM Module crée par Prestacrea - Version : 2.0

Les fondamentaux du développement d applications Java

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

USB 598. Quick Start Guide (Windows) Guide de démarrage rapide (Windows) USB Modem. Modem USB.

France SMS+ MT Premium Description

Editing and managing Systems engineering processes at Snecma

RULE 5 - SERVICE OF DOCUMENTS RÈGLE 5 SIGNIFICATION DE DOCUMENTS. Rule 5 / Règle 5

Logitech Tablet Keyboard for Windows 8, Windows RT and Android 3.0+ Setup Guide Guide d installation

Warren PAULUS. Android SDK et Android x86

APPENDIX 6 BONUS RING FORMAT

LOGICIEL D'ADMINISTRATION POUR E4000 & G4000 MANAGEMENT SOFTWARE FOR E4000 & G4000

Mon Service Public - Case study and Mapping to SAML/Liberty specifications. Gaël Gourmelen - France Telecom 23/04/2007

Forthcoming Database

GIGABIT PCI DESKTOP ADAPTER DGE-530T. Quick Installation Guide+ Guide d installation+

Package Contents. System Requirements. Before You Begin

RAPID Prenez le contrôle sur vos données

Practice Direction. Class Proceedings

Thank you for choosing the Mobile Broadband USB Stick. With your USB Stick, you can access a wireless network at high speed.

GAME CONTENTS CONTENU DU JEU OBJECT OF THE GAME BUT DU JEU

ONTARIO Court File Number. Form 17E: Trial Management Conference Brief. Date of trial management conference. Name of party filing this brief

ARCHOS Activity Tracker

HSCS 6.4 : mieux appréhender la gestion du stockage en environnement VMware et service de fichiers HNAS Laurent Bartoletti Product Marketing Manager

that the child(ren) was/were in need of protection under Part III of the Child and Family Services Act, and the court made an order on

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

Application Form/ Formulaire de demande

TP au menu «UI ANDROID»

Exercices sur SQL server 2000

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

VTP. LAN Switching and Wireless Chapitre 4

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Plan. Department of Informatics

TD/TP 1 Introduction au SDK d Android

Monitor LRD. Table des matières

SERVEUR DÉDIÉ DOCUMENTATION

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

Comprendre l impact de l utilisation des réseaux sociaux en entreprise SYNTHESE DES RESULTATS : EUROPE ET FRANCE

1.3 Gestion d'une application

Folio Case User s Guide

Le No.1 de l économie d énergie pour patinoires.

Adeunis-RF Softwares. Stand-Alone configuration Manager V2. User guide version V1 FRANCAIS ENGLISH

JES Report Broker. Campus Technologies. SAE de CHALEMBERT 1 Rue Blaise PASCAL JAUNAY-CLAN info@campustec.

Get Instant Access to ebook Cest Maintenant PDF at Our Huge Library CEST MAINTENANT PDF. ==> Download: CEST MAINTENANT PDF

Utiliser une WebCam. Micro-ordinateurs, informations, idées, trucs et astuces

Nouveautés printemps 2013

Cheque Holding Policy Disclosure (Banks) Regulations. Règlement sur la communication de la politique de retenue de chèques (banques) CONSOLIDATION

JOnAS 5. Serveur d application d

AVOB sélectionné par Ovum

Configurer la supervision pour une base MS SQL Server Viadéis Services

Installer un domaine DNS

Déploiement OOo en environnement Windows Terminal Server

Table des matières. 1. Installation de VMware ESXI Pré-requis Installation... 3

Education Delivery Intelligent Tool

English version Legal notice

DOCUMENTATION - FRANCAIS... 2

REMBO Version 2.0. Mathrice 2004 DESCRIPTION MISE EN OEUVRE CONCLUSION.

Lavatory Faucet. Instruction Manual. Questions?

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

NTP (Network Time Protocol)

Phone Manager Soutien de l'application OCTOBER 2014 DOCUMENT RELEASE 4.1 SOUTIEN DE L'APPLICATION

UML : Unified Modeling Language

AMENDMENT TO BILL 32 AMENDEMENT AU PROJET DE LOI 32

Gestion des certificats en Internet Explorer

Sauvegarde avec R1Soft Guide de mise en route

Lesson Plan Physical Descriptions. belle vieille grande petite grosse laide mignonne jolie. beau vieux grand petit gros laid mignon

Règlement sur le télémarketing et les centres d'appel. Call Centres Telemarketing Sales Regulation

Tutoriel de formation SurveyMonkey

EN UNE PAGE PLAN STRATÉGIQUE

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Transcription:

Chapitre 4 Le modèle de composants 1

Plan du chapitre 4 Les composants fondamentaux : Activity, Service, BroadcastReceiver, ContentProvider Les activités (cycle de vie, navigation entre les activités, communication interactivités...) Les services (cycle de vie, tâches de fond...). Les types de services (locaux et distants) Le langage AIDL 2

Application android : les fondamentaux (1/3) Rappel :.apk= une application Android, une application Android est dans un.apk "The Android SDK tools compile the code along with any data and resource files into an Android package, an archive file with an.apk suffix. All the code in a single.apkfile is considered to be one application and is the file that Android-powered devices use to install the application." (*) L'environnement Android d'exécution est un système Linux multiutilisateur. Chaque application est exécutée sous un utilisateur différent source : (*) developer.android.com/guide/components/fundamentals.html 3

Application android : les fondamentaux (2/3) "By default, the system assigns each application a unique Linux user ID (the ID is used only by the system and is unknown to the application). The system sets permissions for all the files in an application so that only the user ID assigned to that application can access them. Each process has its own virtual machine (VM), so an application's code runs in isolation from other applications. By default, every application runs in its own Linux process. Android starts the process when any of the application's components need to be executed, then shuts down the process when it's no longer needed or when the system must recover memory for other applications." C'est clair, non? Bibliographie : http://developer.android.com/guide/components/fundamenta 4 ls.html

Application android : les fondamentaux (3/3) Cela dit, il est possible de faire en sorte que deux applications aient le même Linux User ID. Elles pourront alors partager les mêmes fichiers, s'exécuter dans le même process, partager la même VM Evidemment une application peut, si elle en a la permission, accéder aux données d'autres applications comme les contacts, les SMS, la SD card, la caméra, le réseau, etc. Bibliographie : http://developer.android.com/guide/components/fund amentals.html 5

Android = architecture de composants (rappel?) Attention composant = mot galvaudé Pour Android, les principales classes développées et les objets de cette classe sont des composants Composant = objet dont le cycle de vie, le lancement de certaines méthodes est pris en charge par l'environnement d'exécution = ce n'est pas l'utilisateur, ni le développeur qui décident quand certains codes, certains chargements sont lancés. C'est l'environnement d'exécution (= Android) => le développement doit suivre des règles de programmation : dériver de certaines classes, développer certaines méthodes, etc. = architecture de framework : cf. applet, servlet, EJB,... Les composants fondamentaux sont : les Activity, les Service, les BroadcastReceiver, les ContentProvider 6

Cycle de vie d'une Activity Lorsqu'un objet d'une classe Activityest créé, celui ci va passer dans différents états pendant sa vie Lorsqu'un objet d'une classe Activitypasse d'un état à un autre, l'environnement d'exécution Android, lance automatiquement certaines méthodes sur cette activité Au lancement de l'application (lors du clic sur son icône par exemple), une instance de l'activité principale (indiquée dans l'androidmanifest.xml) est construite par l'environnement d'exécution Android. Elle est lancée par un Intent d'action MAIN et de category LAUNCHER <activity android:name=".mainactivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> bibliographie : http://developer.android.com/training/basics/activitylifecycle/index.html 7

Cycle de vie d'une Activity L'automate (simplifié) du cycle de vie : la "step pyramid" : source : http://developer.android.com/training/basics/activitylifecycle/starting.html 8

Autre diagramme d'état d'une Activity Un diagramme similaire au précédent : Moins (ou plus) clair car des états ont été supprimés source : http://developer.android.com/refer ence/android/app/activity.html 9

Signification des états L'état Resumed est souvent appelé l'état Running Les états Created et Started sont dits transient, c'est à dire qu'on passe immédiatement de l'un à l'autre après exécution des méthodes de passage (oncreate(), onstart(), onresume()) Les états Resumed (= Running), Paused, Stopped sont dits static, c'est à dire qu'on peut y être pendant une certaine durée Dans l'état Resumed = Running, l'activité est en avant plan et l'utilisateur peut interagir avec Dans l'état Paused, l'activity est partiellement obscurcie par une autre activity. Dans cet état l'activity ne peut pas recevoir d'entrée utilisateur, ni exécuter du code Dans l'état Stopped, l'activity est complètement masquée (non visible à l'utilisateur). Elle est dite en arrière plan. L'objet activity existe toujours (et garde ses valeurs) mais ne peut pas exécuter de code 10

Passage dans les états Stopped et Started Par abus de langage, on identifie souvent une activité (une classe) avec l'objet qui a été créé à partir de cette activité. C'est le cas ci dessous ou activité = objet Si l'utilisateur fait une action qui démarre une nouvelle activité B, l'activité courante A passe dans l'état Stopped et la nouvelle activité B est créée et arrive à l'état Resumed. Par la suite, quand l'utilisateur appuie sur le bouton back, la première activité A passe dans l'état Started (puis l'état Resumed) et l'activité B passe dans l'état Stopped, puis dans l'état Destroyed => L'appui sur le bouton back amène l'activité en cours dans l'état Destroyed (eh oui) Quand l'utilisateur reçoit un appel téléphonique, l'activité courante passe dans l'état Stopped. Lorsque l'appel téléphonique est terminé, cette activité revient dans Started (puis l'état Resumed) 11

Le contenu des View de Stopped à Started Précisément : "When your activity is stopped, the Activity object is kept resident in memory and is recalled when the activity resumes. You don t need to re-initialize components that were created during any of the callback methods leading up to the Resumed state. The system also keeps track of the current state for each View in the layout, so if the user entered text into an EditText widget, that content is retained so you don't need to save and restore it." Bref on garde le contenu des View source : http://developer.android.com/training/basics/activitylifecycle/stopping.html#start 12

Destruction d'une Activity Une activité est détruite lorsque : l'utilisateur appui sur le bouton back l'application a lancé finish() sur l'activité l'activité était stoppée et l'environnement d'exécution a besoin de mémoire Une activité est détruite et recréée lorsque l'utilisateur change de mode d'affichage de portrait à paysage ou le contraire! "Caution: Your activity will be destroyed and recreated each time the user rotates the screen. When the screen changes orientation, the system destroys and recreates the foreground activity because the screen configuration has changed and your activity might need to load alternative resources (such as the layout)." source : http://developer.android.com/training/basics/activitylifecycle/recreating.html 13

Récupération après destruction Si l'activité a été détruite par appui sur le bouton back ou lancement de finish(), toutes les données de cette activité sont perdues : "When your activity is destroyed because the user presses Back or the activity finishes itself, the system's concept of that Activity instance is gone forever because the behavior indicates the activity is no longer needed" Si l'activité a été détruite par l'environnement d'exécution (du à des contraintes système), celui a sauvegardé les données de chaque Viewde l'activité (comme le texte écrit dans une EditText) dans un Bundle(= collection de paires clé String-valeur Object). Mais pour cela les View doivent avoir un attribut android:id Ainsi si une activité est détruite par l'environnement (et pas par une action de l'utilisateur) et recréée, l'état des View est restaurée source : http://developer.android.com/training/basics/activitylifecycle/recreating.html 14

Sauvegarde de données lors d'une destruction d'activité Pour sauvegarder des données supplémentaires, il faut utiliser la méthode protected void onsaveinstancestate (Bundle outstate). Cette méthode est appelée avant que l'activity soit détruite Par exemple : static final String STATE_SCORE = "playerscore"; static final String STATE_LEVEL = "playerlevel";... @Override public void onsaveinstancestate(bundle savedinstancestate) { // Save the user's current game state savedinstancestate.putint(state_score, mcurrentscore); savedinstancestate.putint(state_level, mcurrentlevel); } // Always call the superclass so it can save the view hierarchy state super.onsaveinstancestate(savedinstancestate); Remarque : il faut bien appeler super.onsaveinstancestate(savedinstancestate); 15

Récupération de données après une destruction d'activité Lorsque l'activité est recrée, les données sauvegardées par onsaveinstancestate (Bundle outstate)peuvent être récupérées par oncreate()et onrestoreinstancestate()qui ont, toutes deux, ce Bundle comme argument : public void onrestoreinstancestate(bundle savedinstancestate) { // Always call the superclass so it can restore the view hierarchy super.onrestoreinstancestate(savedinstancestate); } // Restore state members from saved instance mcurrentscore = savedinstancestate.getint(state_score); mcurrentlevel = savedinstancestate.getint(state_level); 16

Cycle de vie approfondie d'une Activity En fait le cycle de vie d'une activité est plutôt : 17

Démo du cycle de vie d'une Activity Démo à charger à partir de http://developer.android.com/trai ning/basics/activitylifecycle/index.html Voir exécution dans Travail, Ch4CycleVieActivityProjet Sachant que les événements les plus récents sont en premières lignes, que s'est il passé? Réponse : L'activité A a été lancée en premier, puis l'activité B (bouton Start B), puis un Dialog a été affiché (bouton Dialog) (B.onPause()) puis ce Dialog a été enlevé (B.onResume()) 18

Démo du cycle de vie d'une Activity : explication La classe StatusTrackercontient le nom des méthodes qui ont été lancées (dans List<String> mmethodlist) ainsi que le statut de chaque activité dans Map<String, String> mstatusmap, les clés étant les noms des activités, les valeurs leurs statuts A chaque fois qu'une activité change de statut, elle en informe le StatusTracker qui enrichit ces deux champs La méthode Utils.printStatus(...)met à jour les composants graphiques de l'activité principale et est appelée à chaque changement de statut de chaque activité ou dialogue 19

Fin 20