Ciclo di vita dell'app Chrome

Il runtime e la pagina degli eventi dell'app sono responsabili della gestione del ciclo di vita dell'app. Il runtime app gestisce l'installazione dell'app, controlla la pagina dell'evento e può chiudere l'app in qualsiasi momento. La pagina degli eventi rimane in ascolto degli eventi del runtime dell'app e gestisce cosa viene avviato e come.

Come funziona il ciclo di vita

Il runtime dell'app carica la pagina dell'evento dal desktop di un utente e viene attivato l'evento onLaunch(). Questo evento indica alla pagina dell'evento quali finestre avviare e le relative dimensioni.

come funziona il ciclo di vita dell'app

Se la pagina dell'evento non ha JavaScript in esecuzione, nessun callback in attesa e nessuna finestra aperta, il runtime annulla il caricamento della pagina dell'evento e chiude l'app. Prima dell'unload della pagina dell'evento, viene attivato l'evento onSuspend(). In questo modo, la pagina dell'evento ha l'opportunità di eseguire semplici attività di pulizia prima della chiusura dell'app.

Crea pagina e finestre dell'evento

Tutte le app devono avere una pagina degli eventi. Questa pagina contiene la logica di primo livello dell'applicazione senza alcuna UI propria ed è responsabile della creazione delle finestre per tutte le altre pagine dell'app.

Pagina Crea evento

Per creare la pagina dell'evento, includi il campo "background" nel file manifest dell'app e includi background.js nell'array di script. Tutti gli script della libreria utilizzati dalla pagina dell'evento devono essere prima aggiunti al campo "sfondo":

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

La pagina dell'evento deve includere la funzione onLaunched(). Questa funzione viene richiamata quando l'applicazione viene avviata in qualsiasi modo:

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

Crea finestre

Una pagina dell'evento può creare una o più finestre a sua discrezione. Per impostazione predefinita, queste finestre vengono create con una connessione script alla pagina dell'evento e sono accessibili direttamente tramite script dalla pagina dell'evento.

Le app Windows nelle app di Chrome non sono associate a nessuna finestra del browser Chrome. Hanno un frame facoltativo con barra del titolo e controlli per le dimensioni, oltre a un ID finestra consigliato. Le finestre senza ID non verranno ripristinate alle dimensioni e alla posizione corrispondenti dopo il riavvio.

Ecco una finestra di esempio creata da 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
  });
});

Inclusi i dati di lancio

A seconda di come viene lanciata l'app, potresti dover gestire i dati relativi al lancio nella pagina dell'evento. Per impostazione predefinita, non sono disponibili dati relativi all'avvio quando l'app viene avviata da Avvio applicazioni. Per le app dotate di gestori di file, devi gestire il parametro launchData.items per consentirne l'avvio con i file.

Ascolto di eventi di runtime dell'app

Il runtime app controlla le installazioni, gli aggiornamenti e le disinstallazioni dell'app. Non devi fare nulla per configurare il runtime dell'app, ma la pagina dell'evento può rimanere in ascolto dell'evento onInstalled() per memorizzare le impostazioni locali e dell'evento onSuspend() per eseguire semplici attività di pulizia prima dell'unload della pagina dell'evento.

Memorizzazione delle impostazioni locali

chrome.runtime.onInstalled() viene chiamato quando l'app è stata installata per la prima volta o dopo essere stata aggiornata. Ogni volta che viene richiamata questa funzione, viene attivato l'evento onInstalled. La pagina dell'evento può ascoltare questo evento e utilizzare l'API Storage per archiviare e aggiornare le impostazioni locali (vedi anche Opzioni di archiviazione).

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

Prevenzione della perdita di dati

Gli utenti possono disinstallare l'app in qualsiasi momento. Una volta disinstallata, non rimane alcuna esecuzione di codice o dati privati. Questo può causare la perdita di dati, poiché gli utenti potrebbero disinstallare un'app che contiene dati non sincronizzati modificati localmente. Dovresti conservare i dati per evitarne la perdita.

Come minimo, devi memorizzare le impostazioni utente in modo che, se gli utenti reinstallano la tua app, le loro informazioni siano ancora disponibili per il riutilizzo. Utilizzando l'API Storage (storage.sync), i dati utente possono essere sincronizzati automaticamente con Sincronizzazione Chrome.

Esegui la pulizia prima della chiusura dell'app

Il runtime dell'app invia l'evento onSuspend() alla pagina dell'evento prima di annullarlo. La pagina dell'evento può rimanere in ascolto dell'evento, eseguire attività di pulizia e salvare lo stato prima della chiusura dell'app.

Una volta attivato questo evento, il runtime dell'app avvia il processo di chiusura dell'app. Se l'app ha finestre aperte, potrebbe essere riavviata in futuro tramite l'evento onRestarted. In questo caso, l'app deve salvare il proprio stato attuale nell'archiviazione permanente in modo da poterla riavviare nello stesso stato se riceve un evento onRestarted. L'app ha solo pochi secondi per salvare il suo stato, dopodiché verrà terminata, quindi è consigliabile salvarne in modo incrementale lo stato mentre l'app è in esecuzione normalmente.

Dopo aver ricevuto onSuspend, non verranno inviati ulteriori eventi all'app, a meno che per qualche motivo la sospensione non venga interrotta. In questo caso, l'elemento onSuspendCanceled verrà pubblicato nell'app e l'app non verrà scaricata.

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