Contenu connexe Similaire à Sauvegarder et restaurer l'état des applications mobiles (20) Sauvegarder et restaurer l'état des applications mobiles3. Outils Embarcadero
Les meilleurs outils de développement multi-
plateformes. Créez une fois et déployez des
applications modernes sur chaque plateforme.
Support Technique
Nos techniciens sont à votre service à tout
moment pour répondre à vos questions et
vous fournir des informations sûres.
Distributeur Officiel
Partenaire exclusif de Embarcadero
Technologies, largement reconnu pour
ses produits de programmation primés.
B A R N S T E N
QUI
Site : https://www.barnsten.com – Contacts FR : equipe@barnsten.com
4. NOTRE
Société de prestations informatiques.
Edition de sites Internet, vidéos et livres.
Centre de formation référencé sur Datadock.
Infos et contacts : https://olfsoftware.fr
Formations en entreprise : https://se-former-a-delphi.fr
Formations en ligne : https://apprendre-delphi.fr
O L F S O F T W A R E
5. INTROD
L’idée de cette présentation était de parler de
contexte d’exécution d’une application mobile
mais avant cela il est nécessaire de savoir
comment elles fonctionnent et quelles sont les
différences avec les logiciels pour Windows,
macOS et Linux.
© Patrick Prémartin / developpeur-pascal.fr
6. CYCLE
Windows, macOS et Linux sont dans le même
bateau : un programme se lance et se ferme à
peu près de la même façon sur les trois systèmes
d’exploitation.
© Patrick Prémartin / developpeur-pascal.fr
7. CYCLE
Seul bémol pour macOS : le système peut
envoyer des messages de lancement au
programme et ainsi nous transmettre des
informations.
C’est le cas pour les notifications PUSH et les
interactions avec le système de fichiers.
© Patrick Prémartin / developpeur-pascal.fr
8. CYCLE
D’une manière générale, ce qu’il faut retenir pour
les programmes FireMonkey pour Windows,
macOS et Linux, c’est qu’on peut les fermer
proprement ou à la dure.
© Patrick Prémartin / developpeur-pascal.fr
9. CYCLE
La fermeture forcée plante le logiciel, on ne peut
rien y faire car l’OS coupe les processus associés.
La fermeture propre déclenche les événements
onCloseQuery et onClose des fenêtres ouvertes,
puis les blocs finalization des unités (dans l’ordre
de dépilage de leur initialization).
© Patrick Prémartin / developpeur-pascal.fr
10. DEMONS
Consultation du cycle de vie d’un logiciel pour
Windows, macOS et Linux.
Le source est disponible avec les autres exemples
de cette sessions sur GitHub à l’adresse
https://github.com/DeveloppeurPascal/Sauvegar
derEtRestaurerLEtatDesApplicationsMobiles
© Patrick Prémartin / developpeur-pascal.fr
11. CYCLE
Sur mobile on n’a qu’un seul mode de fermeture
valide : la version « à la dure ».
Les événements onCloseQuery / onClose ne sont
appelés que lorsqu’on ferme les fenêtres par
programmation, pas quand on coupe
l’application.
© Patrick Prémartin / developpeur-pascal.fr
12. CYCLE
Le bloc finalization des unités n’est jamais
exécuté sur les plateformes mobiles.
Pensez-y quand vous partagez des unités entre
vos logiciels et que vous utilisez la finalisation du
programme pour enregistrer des paramètres…
car ce ne sera jamais fait sur iOS ni Android !
© Patrick Prémartin / developpeur-pascal.fr
13. CYCLE
Autre différence entre desktop et
mobiles/tablettes c’est que l’application peut
passer en background suite à la prise d’un appel
téléphonique, la réception d’une notification ou
le passage à un autre programme.
© Patrick Prémartin / developpeur-pascal.fr
14. CYCLE
Selon l’OS et l’appareil, l’application peut se
fermer sans que l’utilisateur ne l’ait demandé,
comme il peut aussi arriver qu’elle ne soit jamais
fermée (regardez donc la liste des programmes
ouverts sur les smartphones de votre entourage,
avec leur accord, bien sûr).
© Patrick Prémartin / developpeur-pascal.fr
15. CYCLE
Le cycle de vie d’une application sur Android
est détaillé sur la page
https://developer.android.com/reference/an
droid/app/Activity.html
© Patrick Prémartin / developpeur-pascal.fr
16. CYCLE
Il existe une subtilité par rapport à iOS : dans
certaines versions d’Android et sur certains
modèles de téléphones le passage en
background implique un redémarrage de
l’application.
© Patrick Prémartin / developpeur-pascal.fr
17. CYCLE
Sur les versions récentes on peut modifier ce
comportement dans les options
développeurs de l’OS.
Je vous recommande de jouer avec lorsque
vous testez vos applications mobiles pour ne
pas avoir de mauvaises surprise une fois en
production.
© Patrick Prémartin / developpeur-pascal.fr
18. DEMONS
Voyons les effets de cette simple case sur une
application Android basique.
Le source est disponible avec les autres exemples
de cette sessions sur GitHub :
https://github.com/DeveloppeurPascal/Sauvegar
derEtRestaurerLEtatDesApplicationsMobiles
© Patrick Prémartin / developpeur-pascal.fr
19. CYCLE
Sous iOS ce problème n’existe pas : les
applications ne sont relancées que si elles sont
arrêtées (« proprement » ou par l’OS si elles
prennent trop de ressources).
© Patrick Prémartin / developpeur-pascal.fr
20. CYCLE
Le cycle de vie d’une application sous iOS ou
iPadOS est « plus simple » que sur Android. En
tout cas d’après la page de documentation
officielle :
https://developer.apple.com/documentation/uiki
t/app_and_environment/managing_your_app_s_
life_cycle
© Patrick Prémartin / developpeur-pascal.fr
21. CYCLE
Le hic, parce qu’il y a toujours un hic quand on
parle de technologies Apple, c’est que ça ne
tourne pas toujours pareil selon les versions
d’iOS.
Ca a été nettement simplifié, mais il y a un
changement notable depuis iOS 13.
© Patrick Prémartin / developpeur-pascal.fr
22. CYCLE
Voici le schéma du cycle de vie d’une application
pour iOS 12 : c’est l’application qui gère les états à
son plus haut niveau.
© Patrick Prémartin / developpeur-pascal.fr
23. CYCLE
Voici le schéma du cycle de vie d’une application
pour iOS 13 : ce n’est plus l’application qui gère
les états mais ce sont ses scènes.
© Patrick Prémartin / developpeur-pascal.fr
24. CYCLE
Notez au passage la référence au « Launch Screen
UI » qui est apparu avec iOS 12 et est géré en
standard depuis Delphi 10.4 Sydney puisqu’il est
désormais obligatoire pour l’AppStore.
Rappel : le « Launch Screen UI » n’est pas un
« splash screen ». Apple est clair là dessus même
s’ils ne sévissent pas encore…
© Patrick Prémartin / developpeur-pascal.fr
25. CYCLE
Pour nous, pas de réelle différence : c’est
FireMonkey qui fait le nécessaire au niveau du
service de plateforme IFMXApplicationEventService
http://docwiki.embarcadero.com/Libraries/Rio/en/
FMX.Platform.IFMXApplicationEventService
© Patrick Prémartin / developpeur-pascal.fr
26. DEMONS
Voyons comment gérer les étapes du cycle de vie
dans Delphi et ce que ça donne en pratique sous
iOS et Android.
Le source est disponible avec les autres exemples
de cette sessions sur GitHub :
https://github.com/DeveloppeurPascal/Sauvegar
derEtRestaurerLEtatDesApplicationsMobiles
© Patrick Prémartin / developpeur-pascal.fr
27. CONTEXTE
Passons maintenant au cœur du sujet : sachant ce
qui se produit pour nos logiciels selon ce que font
les utilisateurs sur les différentes plateformes
ciblées, à nous de nous assurer qu’ils ne perdent
pas de données…
© Patrick Prémartin / developpeur-pascal.fr
28. CONTEXTE
Ce que j’entends par contexte d’exécution est
volontairement vague car cela dépend de chaque
application : les fiches ouvertes, les données en
cours de saisie, les fichiers ouverts et leur
contenu, les transactions non validées dans les
bases de données, …
© Patrick Prémartin / developpeur-pascal.fr
29. CONTEXTE
En gros les informations de session et l’image
mémoire de l’application ouverte.
Vous en conviendrez, difficile de donner une
solution générique valide pour tous les cas.
© Patrick Prémartin / developpeur-pascal.fr
30. CONTEXTE
Pour un jeu vidéo ce serait « simple » : ça
consisterait à mettre le jeu en pause et proposer
de relancer la partie lors de la réactivation de
l’application.
© Patrick Prémartin / developpeur-pascal.fr
31. CONTEXTE
Pour une application de gestion où la moindre
transaction est répartie sur plusieurs écrans et
nécessite la saisie d’une multitude de données, ça
nécessite réflexion.
© Patrick Prémartin / developpeur-pascal.fr
32. CONTEXTE
Pour nous simplifier la tâche Embarcadero
propose un système de sauvegarde/restauration
d’informations liées à notre logiciel/application
mobile.
http://docwiki.embarcadero.com/RADStudio/Syd
ney/fr/Fonctionnalité_Enregistrer_l%27état_de_F
ireMonkey
© Patrick Prémartin / developpeur-pascal.fr
33. CONTEXTE
La lecture des données est à faire au niveau de
l’événement onCreate de chaque fiche.
L’enregistrement des données est à faire au
niveau de l’événement onSaveState de chaque
fiche.
© Patrick Prémartin / developpeur-pascal.fr
34. CONTEXTE
On utilise le flux disponible dans SaveState pour
le stockage qui s’effectue en mémoire mais peut
aussi devenir persistant selon l’état de
l’application et si on spécifie un chemin d’accès
pour son stockage.
© Patrick Prémartin / developpeur-pascal.fr
35. DEMONS
Ajoutons SaveState aux étapes du cycle de vie et
voyons ce que ça donne.
Le source est disponible avec les autres exemples
de cette sessions sur GitHub :
https://github.com/DeveloppeurPascal/Sauvegar
derEtRestaurerLEtatDesApplicationsMobiles
© Patrick Prémartin / developpeur-pascal.fr
36. EXEMPLE
Reste à faire un test dans un programme
d’exemple avec une ou plusieurs fiches.
Le source est disponible avec les autres exemples
de cette sessions sur GitHub :
https://github.com/DeveloppeurPascal/Sauvegar
derEtRestaurerLEtatDesApplicationsMobiles
© Patrick Prémartin / developpeur-pascal.fr
38. CONCL
© Patrick Prémartin / developpeur-pascal.fr
Nous avons vu les différents états des
applications mobiles et comment sauvegarder et
restaurer le contexte de nos logiciels.
A vous de passer à la pratique pour améliorer
l’expérience de vos utilisateurs au quotidien.
39. CONCL
© Patrick Prémartin / developpeur-pascal.fr
La rediffusion de ce webinaire devrait être
disponible sur la chaîne YouTube de Barnsten :
https://www.youtube.com/channel/UCSrWP5Y01
uSHS3014Pfprlw/videos
40. CONCL
© Patrick Prémartin / developpeur-pascal.fr
Pour des ressources complémentaires,
télécharger cette présentation et accéder aux
exemples, rendez-vous sur :
https://developpeur-pascal.fr/p/_200m-
webinaire-du-31-aout-2020-sauvegarder-et-
restaurer-l-etat-des-applications-mobiles.html
41. PROCHAINS
© Patrick Prémartin / developpeur-pascal.fr
Prochains webinaires :
- 29 septembre 2020 : Développer une
application pour Android TV avec Delphi
- 27 octobre, 24 novembre et 29 décembre
Détails et inscriptions depuis
https://developpeur-pascal.fr/p/_6007-
webinaires.html