L'environnement d'exécution de l'application et la page d'événements sont chargés de gérer le cycle de vie de l'application. L'environnement d'exécution de l'application gère l'installation des applications, contrôle la page de l'événement et peut arrêter l'application à tout moment. La page d'événements écoute les événements de l'environnement d'exécution de l'application et gère ce qui est lancé et comment.
Fonctionnement du cycle de vie
L'environnement d'exécution de l'application charge la page de l'événement à partir du bureau d'un utilisateur, et l'événement onLaunch()
est déclenché. Cet événement indique à la page d'événement les fenêtres à lancer et leurs dimensions.
Lorsque la page d'événement n'exécute aucun code JavaScript, qu'aucun rappel en attente et qu'aucune fenêtre n'est ouverte, l'environnement d'exécution décharge la page d'événement et ferme l'application. Avant de décharger la page d'événement, l'événement onSuspend()
est déclenché. Cela permet à la page de l'événement d'effectuer des tâches de nettoyage simples avant la fermeture de l'application.
Créer une page et des fenêtres d'événement
Toutes les applications doivent disposer d'une page d'événement. Cette page contient la logique de niveau supérieur de l'application, sans UI propre, et est responsable de la création des fenêtres pour toutes les autres pages de l'application.
Page "Créer un événement"
Pour créer la page d'événement, incluez le champ "background" dans le fichier manifeste de l'application et incluez background.js
dans le tableau des scripts. Tous les scripts de bibliothèque utilisés par la page d'événement doivent d'abord être ajoutés au champ "background" :
"background": {
"scripts": [
"foo.js",
"background.js"
]
}
La page de l'événement doit inclure la fonction onLaunched()
. Cette fonction est appelée lorsque votre application est lancée d'une manière ou d'une autre:
chrome.app.runtime.onLaunched.addListener(function() {
// Tell your app what to launch and how.
});
Créer des fenêtres
Une page d'événement peut créer une ou plusieurs fenêtres à sa discrétion. Par défaut, ces fenêtres sont créées avec une connexion de script à la page de l'événement et peuvent être directement scriptées par la page de l'événement.
Dans les applications Chrome, les fenêtres Windows ne sont associées à aucune fenêtre du navigateur Chrome. Ils disposent d'un cadre facultatif avec une barre de titre et des commandes de taille, ainsi que d'un ID de fenêtre recommandé. Les fenêtres sans ID ne retrouveront pas leur taille et leur emplacement après le redémarrage.
Voici un exemple de fenêtre créée à partir de background.js
:
chrome.app.runtime.onLaunched.addListener(function() {
chrome.app.window.create('main.html', {
id: 'MyWindowID',
bounds: {
width: 800,
height: 600,
left: 100,
top: 100
},
minWidth: 800,
minHeight: 600
});
});
Inclure les données de lancement
Selon la manière dont votre application est lancée, vous devrez peut-être gérer les données de lancement sur votre page d'événement. Par défaut, aucune donnée de lancement n'est disponible lorsque l'application est lancée par le lanceur d'applications. Pour les applications qui disposent de gestionnaires de fichiers, vous devez gérer le paramètre launchData.items
pour leur permettre d'être lancées avec des fichiers.
Écouter les événements d'exécution de l'application
L'environnement d'exécution de l'application contrôle les installations, les mises à jour et les désinstallations de l'application. Aucune action de votre part n'est requise pour configurer l'environnement d'exécution de l'application, mais votre page d'événement peut écouter l'événement onInstalled()
pour stocker les paramètres locaux et l'événement onSuspend()
pour effectuer des tâches de nettoyage simples avant que la page d'événement ne soit désinstallée.
Stocker des paramètres locaux
chrome.runtime.onInstalled()
est appelé lors de la première installation ou de la mise à jour de votre application. Chaque fois que cette fonction est appelée, l'événement onInstalled
est déclenché. La page de l'événement peut écouter cet événement et utiliser l'API Storage pour stocker et mettre à jour les paramètres locaux (voir également les options de stockage).
chrome.runtime.onInstalled.addListener(function() {
chrome.storage.local.set(object items, function callback);
});
Prévenir la perte de données
Les utilisateurs peuvent désinstaller votre application à tout moment. Lors de la désinstallation, aucun code d'exécution ni aucune donnée privée ne sont laissés. Cela peut entraîner une perte de données, car les utilisateurs peuvent désinstaller une application qui a des données non synchronisées et modifiées localement. Vous devez stocker des données pour éviter toute perte de données.
Vous devez au minimum stocker les paramètres utilisateur afin que, s'ils réinstallent votre application, leurs informations puissent toujours être réutilisées. À l'aide de l'API Storage (storage.sync), les données utilisateur peuvent être synchronisées automatiquement avec la synchronisation Chrome.
Nettoyage avant la fermeture de l'application
L'environnement d'exécution de l'application envoie l'événement onSuspend()
à la page d'événement avant de la décharger. Votre page d'événement peut écouter cet événement, effectuer des tâches de nettoyage et enregistrer l'état avant la fermeture de l'application.
Une fois cet événement déclenché, l'environnement d'exécution de l'application démarre le processus de fermeture de l'application. Si l'application a des fenêtres ouvertes, elle peut être redémarrée à l'avenir via l'événement onRestarted
. Dans ce cas, l'application doit enregistrer son état actuel sur le stockage persistant afin de pouvoir redémarrer dans le même état si elle reçoit un événement onRestarted
. L'application n'a que quelques secondes pour enregistrer son état, après quoi elle sera arrêtée. Il est donc judicieux d'enregistrer de manière incrémentielle l'état de l'application lorsqu'elle s'exécute normalement.
Après avoir reçu onSuspend
, aucun autre événement ne sera envoyé à l'application, sauf si la suspension est interrompue pour une raison quelconque. Dans ce cas, l'onSuspendCanceled
sera envoyée à l'application et celle-ci ne sera pas désinstallée.
chrome.runtime.onSuspend.addListener(function() {
// Do some simple clean-up tasks.
});