Die App-Laufzeit und die Ereignisseite sind für die Verwaltung des App-Lebenszyklus verantwortlich. Die App-Laufzeit verwaltet die App-Installation, steuert die Ereignisseite und kann die App jederzeit herunterfahren. Auf der Ereignisseite werden Ereignisse aus der App-Laufzeit überwacht und verwaltet, was und wie gestartet wird.
So funktioniert der Lebenszyklus
Die App-Laufzeit lädt die Ereignisseite vom Computer eines Nutzers und das Ereignis onLaunch()
wird ausgelöst. Dieses Ereignis gibt der Ereignisseite an, welche Fenster geöffnet werden sollen und welche Abmessungen sie haben sollen.
Wenn die Ereignisseite kein ausführendes JavaScript, keine ausstehenden Callbacks und keine geöffneten Fenster enthält, entlädt die Laufzeit die Ereignisseite und schließt die Anwendung. Vor dem Entladen der Ereignisseite wird das Ereignis onSuspend()
ausgelöst. So können auf der Ereignisseite einfache Bereinigungsaufgaben ausgeführt werden, bevor die App geschlossen wird.
Ereignisseite und -fenster erstellen
Alle Apps müssen eine Ereignisseite haben. Diese Seite enthält die Logik der obersten Ebene der Anwendung ohne eigene Benutzeroberfläche und ist für das Erstellen der Fenster für alle anderen App-Seiten verantwortlich.
Ereignisseite erstellen
Fügen Sie zum Erstellen der Ereignisseite das Feld „background“ in das App-Manifest und background.js
in das Scripts-Array ein. Alle Bibliotheksscripts, die auf der Veranstaltungsseite verwendet werden, müssen zuerst dem Feld „background“ hinzugefügt werden:
"background": {
"scripts": [
"foo.js",
"background.js"
]
}
Deine Veranstaltungsseite muss die Funktion onLaunched()
enthalten. Diese Funktion wird aufgerufen, wenn Ihre Anwendung auf irgendeine Weise gestartet wird:
chrome.app.runtime.onLaunched.addListener(function() {
// Tell your app what to launch and how.
});
Fenster erstellen
Auf einer Eventseite können nach Belieben ein oder mehrere Fenster erstellt werden. Diese Fenster werden standardmäßig mit einer Skriptverbindung zur Veranstaltungsseite erstellt und können von der Veranstaltungsseite direkt in Scripts eingefügt werden.
Fenster in Chrome-Apps sind nicht mit Chrome-Browserfenstern verknüpft. Sie haben einen optionalen Frame mit einer Titelleiste und Größensteuerelementen sowie eine empfohlene Fenster-ID. Fenster ohne IDs werden nach dem Neustart nicht wieder in ihrer ursprünglichen Größe und Position wiederhergestellt.
Hier ein Beispielfenster, das mit 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
});
});
Einführungsdaten einschließen
Je nachdem, wie Ihre App veröffentlicht wird, müssen Sie möglicherweise Startdaten auf Ihrer Ereignisseite verarbeiten. Standardmäßig gibt es keine Startdaten, wenn die App über den App Launcher gestartet wird. Bei Apps 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 Installation, Aktualisierung und Deinstallation der App. Sie müssen nichts weiter unternehmen, um die App-Laufzeit einzurichten. Ihre Ereignisseite kann jedoch auf das Ereignis onInstalled()
warten, um lokale Einstellungen zu speichern, und auf das Ereignis onSuspend()
, um einfache Bereinigungsaufgaben auszuführen, bevor die Ereignisseite entladen wird.
Lokale Einstellungen speichern
chrome.runtime.onInstalled()
wird aufgerufen, wenn Ihre App zum ersten Mal installiert oder aktualisiert wurde. Jedes Mal, wenn diese Funktion aufgerufen wird, wird das Ereignis onInstalled
ausgelöst. Die Ereignisseite kann auf dieses Ereignis warten und mit der Storage API lokale Einstellungen speichern und aktualisieren (siehe auch Speicheroptionen).
chrome.runtime.onInstalled.addListener(function() {
chrome.storage.local.set(object items, function callback);
});
Datenverluste verhindern
Nutzer können Ihre App jederzeit deinstallieren. Nach der Deinstallation bleiben kein ausgeführter Code und keine privaten Daten mehr zurück. Dies kann zu Datenverlusten führen, da die Nutzer möglicherweise eine App deinstallieren, die lokal bearbeitete, nicht synchronisierte Daten enthält. Sie sollten Daten zwischenspeichern, um Datenverluste zu vermeiden.
Zumindest solltest du die Nutzereinstellungen so speichern, dass Nutzer ihre Informationen auch dann wiederverwenden können, wenn sie deine App neu installieren. Mit der Storage API (storage.sync) können Nutzerdaten automatisch mit der Chrome-Synchronisierung synchronisiert werden.
Vor dem Schließen der App bereinigen
Die App-Laufzeit sendet das Ereignis onSuspend()
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, beginnt die App-Laufzeit mit dem Schließen der App. Wenn die App geöffnete Fenster hat, kann sie in Zukunft über das Ereignis onRestarted
neu gestartet werden. In diesem Fall sollte die App ihren aktuellen Status im nichtflüchtigen Speicher speichern, damit sie im selben Status neu gestartet werden kann, wenn sie ein onRestarted
-Ereignis empfängt. Die App hat nur wenige Sekunden Zeit, ihren Status zu speichern, bevor sie beendet wird. Daher ist es empfehlenswert, den App-Status schrittweise zu speichern, während die App normal ausgeführt wird.
Nach Erhalt von onSuspend
werden keine weiteren Ereignisse an die App gesendet, es sei denn, die Sperrung wird aus irgendeinem Grund abgebrochen. In diesem Fall wird die onSuspendCanceled
an die App gesendet und die App wird nicht entladen.
chrome.runtime.onSuspend.addListener(function() {
// Do some simple clean-up tasks.
});