Lebenszyklus von Chrome-Apps

Die Seite für die App-Laufzeit und die App-Ereignisse sind für die Verwaltung des App-Lebenszyklus zuständig. Die App-Laufzeit verwaltet die Anwendungsinstallation, steuert die Ereignisseite und kann die Anwendung jederzeit herunterfahren. Die Ereignisseite wartet auf Ereignisse aus der App-Laufzeit und verwaltet, was wie gestartet wird.

Funktionsweise des Lebenszyklus

Die App-Laufzeit lädt die Ereignisseite vom Desktop eines Nutzers und das onLaunch()-Ereignis wird ausgelöst. Durch dieses Ereignis wird der Ereignisseite mitgeteilt, welche Fenster und deren Abmessungen gestartet werden sollen.

Funktionsweise des Anwendungslebenszyklus

Wenn die Ereignisseite kein ausgeführtes JavaScript, keine ausstehenden Callbacks und keine geöffneten Fenster enthält, wird die Ereignisseite während der Laufzeit entladen und die App geschlossen. Bevor die Ereignisseite entladen wird, wird das Ereignis onSuspend() ausgelöst. So kann die Veranstaltungsseite einfache Bereinigungsaufgaben ausführen, bevor die App geschlossen wird.

Veranstaltungsseite und -fenster erstellen

Alle Apps müssen eine Veranstaltungsseite haben. Diese Seite enthält die übergeordnete Logik der Anwendung ohne eigene Benutzeroberfläche und ist für die Erstellung der Fenster für alle anderen Anwendungsseiten verantwortlich.

Seite „Termin erstellen“

Füge zum Erstellen der Ereignisseite das Feld „Hintergrund“ in das App-Manifest ein und füge background.js in das Array-Array ein. Alle von der Ereignisseite verwendeten Bibliotheksskripts müssen zuerst dem Feld "Hintergrund" hinzugefügt werden:

"background": {
  "scripts": [
    "foo.js",
    "background.js"
  ]
}

Die Veranstaltungsseite muss die Funktion onLaunched() enthalten. Diese Funktion wird aufgerufen, wenn Ihre Anwendung gestartet wird:

chrome.app.runtime.onLaunched.addListener(function() {
  // Tell your app what to launch and how.
});

Fenster erstellen

Eine Ereignisseite kann ein oder mehrere Fenster nach eigenem Ermessen erstellen. Standardmäßig werden diese Fenster über eine Skriptverbindung zur Ereignisseite erstellt und können direkt von der Ereignisseite aus aufgerufen werden.

Windows in Chrome-Apps ist mit keinem Chrome-Browserfenster verknüpft. Sie haben einen optionalen Frame mit Titelleiste und Größensteuerelementen sowie eine empfohlene Fenster-ID. Windows ohne IDs werden nach dem Neustart nicht in ihrer Größe und ihrem Speicherort wiederhergestellt.

Hier ist ein Beispielfenster, das aus background.js erstellt wurde:

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
  });
});

Einschließlich Startdaten

Je nachdem, wie Ihre App gestartet wird, müssen Sie möglicherweise Startdaten auf Ihrer Ereignisseite verarbeiten. Standardmäßig sind keine Startdaten vorhanden, wenn die App vom App Launcher gestartet wird. Bei Anwendungen mit Datei-Handlern müssen Sie den Parameter launchData.items verarbeiten, damit sie mit Dateien gestartet werden können.

Auf App-Laufzeitereignisse warten

Die App-Laufzeit steuert die Installationen, Updates und Deinstallationen der App. Sie müssen nichts tun, um die App-Laufzeit einzurichten. Ihre Ereignisseite kann aber auf das onInstalled()-Ereignis warten, um lokale Einstellungen zu speichern, und auf das onSuspend()-Ereignis, um einfache Bereinigungsaufgaben auszuführen, bevor die Ereignisseite entladen wird.

Lokale Einstellungen speichern

chrome.runtime.onInstalled() wird aufgerufen, wenn Ihre Anwendung zum ersten Mal installiert oder aktualisiert wurde. Bei jedem Aufruf dieser Funktion wird das Ereignis onInstalled ausgelöst. Die Ereignisseite kann auf dieses Ereignis warten und die Storage API verwenden, um lokale Einstellungen zu speichern und zu aktualisieren (siehe auch Speicheroptionen).

chrome.runtime.onInstalled.addListener(function() {
  chrome.storage.local.set(object items, function callback);
});

Datenverlust verhindern

Nutzer können deine App jederzeit deinstallieren. Bei der Deinstallation bleiben kein Code oder private Daten zurück, der ausgeführt wird. Dies kann zu Datenverlust führen, da Nutzer möglicherweise eine Anwendung deinstallieren, die lokal bearbeitete, nicht synchronisierte Daten enthält. Sie sollten Daten aufbewahren, um Datenverluste zu vermeiden.

Sie sollten zumindest Nutzereinstellungen speichern, damit die Daten bei der Neuinstallation Ihrer App weiterhin wiederverwendet werden können. Über die Storage API (storage.sync) können Nutzerdaten automatisch mit der Chrome-Synchronisierung synchronisiert werden.

Bereinigung vor dem Schließen der App

Die App-Laufzeit sendet das onSuspend()-Ereignis an die Ereignisseite, bevor es entladen wird. Ihre Ereignisseite kann auf dieses Ereignis warten, Bereinigungsaufgaben ausführen und den Status speichern, bevor die App geschlossen wird.

Sobald dieses Ereignis ausgelöst wird, startet die App-Laufzeit das Schließen der App. Wenn die App offene Fenster hat, kann sie in Zukunft über das onRestarted-Ereignis neu gestartet werden. In diesem Fall sollte die Anwendung ihren aktuellen Status im nichtflüchtigen Speicher speichern, damit sie im selben Zustand neu gestartet werden kann, wenn sie ein onRestarted-Ereignis empfängt. Die Anwendung hat nur wenige Sekunden Zeit, ihren Status zu speichern. Danach wird sie beendet. Daher empfiehlt es sich, den Anwendungsstatus schrittweise zu speichern, während die Anwendung normal ausgeführt wird.

Nach dem Empfang von onSuspend werden keine weiteren Ereignisse an die App gesendet, es sei denn, die Sperrung wird aus irgendeinem Grund abgebrochen. In diesem Fall wird onSuspendCanceled an die App übergeben und die App wird nicht entladen.

chrome.runtime.onSuspend.addListener(function() {
  // Do some simple clean-up tasks.
});