Ciclo di vita dell'app Chrome

Il runtime dell'app e la pagina degli eventi sono responsabili della gestione del ciclo di vita dell'app. Il runtime dell'app gestisce l'installazione dell'app, controlla la pagina dell'evento e può arrestare l'app in qualsiasi momento. La pagina event ascolta gli eventi del runtime dell'app e gestisce cosa viene lanciato e come.

Come funziona il ciclo di vita

Il runtime dell'app carica la pagina dell'evento dal computer 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 delle app

Quando la pagina dell'evento non ha JavaScript in esecuzione, non ha callback in attesa e non ha finestre aperte, il runtime scarica la pagina dell'evento e chiude l'app. Prima di scaricare la pagina dell'evento, viene attivato l'evento onSuspend(). In questo modo, la pagina dell'evento può eseguire semplici attività di pulizia prima di chiudere l'app.

Creare pagine e finestre di eventi

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

Crea pagina evento

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

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

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

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

Creare finestre

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

Le finestre nelle app Chrome non sono associate a finestre del browser Chrome. Hanno un frame facoltativo con barra del titolo e controlli delle dimensioni e un ID finestra consigliato. Le finestre senza ID non verranno ripristinate alle dimensioni e alla posizione originali 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 la tua app, potrebbe essere necessario gestire i dati di lancio nella pagina dell'evento. Per impostazione predefinita, non sono disponibili dati di avvio quando l'app viene avviata dall'avvio app. Per le app che hanno gestori di file, devi gestire il parametro launchData.items per consentirne l'avvio con i file.

Ascolto degli eventi di runtime dell'app

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

Memorizzazione delle impostazioni locali

chrome.runtime.onInstalled() viene chiamato quando la tua app viene installata per la prima volta o quando è stata aggiornata. Ogni volta che viene chiamata questa funzione, viene attivato l'evento onInstalled. La pagina dell'evento può rimanere in ascolto di 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 la tua app in qualsiasi momento. Al momento della disinstallazione, non viene lasciato alcun codice in esecuzione o dati privati. Ciò può comportare la perdita di dati, poiché gli utenti potrebbero disinstallare un'app con dati non sincronizzati modificati localmente. Devi archiviare i dati per evitare la perdita di dati.

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

Pulizia prima della chiusura dell'app

Il runtime dell'app invia l'evento onSuspend() alla pagina dell'evento prima di scaricarla. La pagina dell'evento può rimanere in ascolto dell'evento ed 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 dovrebbe salvare il suo stato attuale in archiviazione permanente in modo da poter riavviare nello stesso stato se riceve un evento onRestarted. L'app ha solo pochi secondi di tempo per salvare il proprio stato, dopodiché verrà terminata. Pertanto, è buona norma salvare in modo incrementale lo stato dell'app mentre è in esecuzione normalmente.

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

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