Levenscyclus van Chrome-app

De app-runtime- en gebeurtenispagina zijn verantwoordelijk voor het beheer van de app-levenscyclus. De app-runtime beheert de app-installatie, beheert de gebeurtenispagina en kan de app op elk gewenst moment afsluiten. De gebeurtenispagina luistert naar gebeurtenissen uit de app-runtime en beheert wat er wordt gelanceerd en hoe.

Hoe de levenscyclus werkt

De app-runtime laadt de gebeurtenispagina vanaf het bureaublad van een gebruiker en de gebeurtenis onLaunch() wordt geactiveerd. Dit evenement vertelt de evenementpagina welke vensters moeten worden geopend en wat hun afmetingen zijn.

hoe de levenscyclus van een app werkt

Wanneer er op de gebeurtenispagina geen JavaScript wordt uitgevoerd, er geen callbacks in behandeling zijn en er geen geopende vensters zijn, wordt de gebeurtenispagina door de runtime leeggemaakt en de app gesloten. Voordat de gebeurtenispagina wordt verwijderd, wordt de gebeurtenis onSuspend() geactiveerd. Dit geeft de evenementenpagina de mogelijkheid om eenvoudige opruimtaken uit te voeren voordat de app wordt gesloten.

Maak een evenementenpagina en vensters

Alle apps moeten een evenementenpagina hebben. Deze pagina bevat de logica op het hoogste niveau van de applicatie zonder een eigen gebruikersinterface en is verantwoordelijk voor het maken van de vensters voor alle andere app-pagina's.

Maak een evenementenpagina

Als u de gebeurtenispagina wilt maken, neemt u het veld 'achtergrond' op in het app-manifest en neemt u de background.js op in de scriptarray. Alle bibliotheekscripts die door de evenementenpagina worden gebruikt, moeten eerst aan het veld 'achtergrond' worden toegevoegd:

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

Uw evenementpagina moet de functie onLaunched() bevatten. Deze functie wordt aangeroepen wanneer uw toepassing op welke manier dan ook wordt gestart:

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

Maak vensters

Een evenementenpagina kan naar eigen goeddunken een of meer vensters aanmaken. Deze vensters worden standaard gemaakt met een scriptverbinding met de gebeurtenispagina en zijn rechtstreeks scriptbaar door de gebeurtenispagina.

Windows in Chrome-apps zijn niet gekoppeld aan Chrome-browservensters. Ze hebben een optioneel frame met titelbalk en formaatregelaars, en een aanbevolen venster-ID. Windows zonder ID's worden na het opnieuw opstarten niet hersteld naar hun grootte en locatie.

Hier is een voorbeeldvenster gemaakt op basis van 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
  });
});

Inclusief lanceringsgegevens

Afhankelijk van hoe uw app wordt gelanceerd, moet u mogelijk de lanceringsgegevens op uw evenementpagina verwerken. Standaard zijn er geen opstartgegevens wanneer de app wordt gestart door het app-opstartprogramma. Voor apps met bestandshandlers moet u de parameter launchData.items afhandelen, zodat ze met bestanden kunnen worden gestart.

Luisteren naar app-runtime-gebeurtenissen

De app-runtime bestuurt de app-installaties, updates en verwijderingen. U hoeft niets te doen om de runtime van de app in te stellen, maar uw gebeurtenispagina kan luisteren naar de gebeurtenis onInstalled() om lokale instellingen op te slaan en de gebeurtenis onSuspend() om eenvoudige opruimtaken uit te voeren voordat de gebeurtenispagina wordt geopend. gelost.

Lokale instellingen opslaan

chrome.runtime.onInstalled() wordt aangeroepen wanneer uw app voor het eerst is geïnstalleerd of wanneer deze is bijgewerkt. Telkens wanneer deze functie wordt aangeroepen, wordt de gebeurtenis onInstalled geactiveerd. De gebeurtenispagina kan naar deze gebeurtenis luisteren en de Storage API gebruiken om lokale instellingen op te slaan en bij te werken (zie ook Opslagopties ).

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

Gegevensverlies voorkomen

Gebruikers kunnen uw app op elk gewenst moment verwijderen. Bij het verwijderen blijven er geen uitvoerende code of privégegevens achter. Dit kan tot gegevensverlies leiden, omdat de gebruikers mogelijk een app verwijderen die lokaal bewerkte, niet-gesynchroniseerde gegevens bevat. U moet gegevens opslaan om gegevensverlies te voorkomen.

U moet de gebruikersinstellingen in ieder geval zo opslaan, dat als gebruikers uw app opnieuw installeren, hun gegevens nog steeds beschikbaar zijn voor hergebruik. Met behulp van de Storage API ( storage.sync ) kunnen gebruikersgegevens automatisch worden gesynchroniseerd met Chrome-synchronisatie.

Opruimen voordat de app sluit

De app-runtime verzendt de gebeurtenis onSuspend() naar de gebeurtenispagina voordat deze wordt verwijderd. Je evenementenpagina kan naar dit evenement luisteren en opruimtaken uitvoeren en de status opslaan voordat de app sluit.

Zodra deze gebeurtenis is geactiveerd, start de app-runtime het proces voor het sluiten van de app. Als de app open vensters heeft, kan deze in de toekomst opnieuw worden opgestart via de onRestarted -gebeurtenis. In dit geval moet de app de huidige status opslaan in permanente opslag, zodat deze in dezelfde staat opnieuw kan opstarten als deze een onRestarted -gebeurtenis ontvangt. De app heeft slechts een paar seconden de tijd om de status op te slaan, waarna deze wordt beëindigd. Het is dus een goed idee om de app-status stapsgewijs op te slaan terwijl de app normaal werkt.

Na ontvangst van onSuspend worden er geen verdere evenementen meer aan de app geleverd, tenzij de opschorting om een ​​of andere reden wordt afgebroken. In dit geval wordt de onSuspendCanceled afgeleverd bij de app en wordt de app niet verwijderd.

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