Cykl życia aplikacji Chrome

Środowisko wykonawcze aplikacji i strona zdarzeń odpowiadają za zarządzanie cyklem życia aplikacji. Środowisko wykonawcze aplikacji zarządza jego instalacją, steruje stroną wydarzenia i może w każdej chwili wyłączyć aplikację. Strona zdarzeń nasłuchuje zdarzeń w środowisku wykonawczym aplikacji i zarządza tym, co i w jaki sposób jest uruchamiane.

Jak działa cykl życia

Środowisko wykonawcze aplikacji wczytuje stronę zdarzenia z komputera użytkownika i uruchamia zdarzenie onLaunch(). To zdarzenie informuje stronę zdarzenia, które okna otworzyć i jakie mają wymiary.

jak działa cykl życia aplikacji

Jeśli strona zdarzenia nie ma wykonywanego kodu JavaScript, nie ma oczekujących wywołań zwrotnych ani otwartych okien, w środowisku wykonawczym wyładowuje się strona zdarzenia i zamyka aplikację. Przed usunięciem strony zdarzenia wywoływane jest zdarzenie onSuspend(). Dzięki temu można na stronie wydarzenia wykonać proste czynności porządkowe przed zamknięciem aplikacji.

Utwórz stronę i okna zdarzenia

Wszystkie aplikacje muszą mieć stronę wydarzenia. Ta strona zawiera logikę najwyższego poziomu aplikacji bez własnego interfejsu i odpowiada za tworzenie okien dla wszystkich innych stron aplikacji.

Strona tworzenia wydarzenia

Aby utworzyć stronę zdarzenia, dodaj pole „tło” do pliku manifestu aplikacji i dodaj background.js do tablicy skryptów. Wszystkie skrypty biblioteki używane na stronie zdarzenia muszą najpierw zostać dodane do pola „tło”:

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

Strona wydarzenia musi zawierać funkcję onLaunched(). Ta funkcja jest wywoływana, gdy aplikacja jest uruchamiana w dowolny sposób:

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

Utwórz okna

Strona wydarzenia może utworzyć jedno lub więcej okien według własnego uznania. Domyślnie okna te są tworzone przez połączenie skryptu ze stroną zdarzenia i można do nich bezpośrednio skrypt na stronie zdarzenia.

Okna Windows w aplikacjach Chrome nie są powiązane z żadnymi oknami przeglądarki Chrome. Mają opcjonalną ramkę z paskiem tytułu i ustawieniami rozmiaru oraz zalecany identyfikator okna. Po ponownym uruchomieniu system Windows bez identyfikatorów nie zostanie przywrócony do rozmiaru ani lokalizacji.

Oto przykładowe okno utworzone w 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
  });
});

Z uwzględnieniem danych uruchamiania

W zależności od tego, jak aplikacja została uruchomiona, na stronie wydarzenia może być konieczne obsługę danych dotyczących uruchamiania. Domyślnie nie są dostępne żadne dane o uruchamianiu aplikacji za pomocą Menu z aplikacjami. W przypadku aplikacji zawierających moduły obsługi plików musisz obsłużyć parametr launchData.items, aby umożliwić ich uruchamianie z plikami.

Nasłuchiwanie zdarzeń w czasie działania aplikacji

Środowisko wykonawcze aplikacji kontroluje instalację, aktualizację i odinstalowanie. Nie musisz nic robić, aby skonfigurować środowisko wykonawcze aplikacji, ale strona zdarzenia może nasłuchiwać zdarzenia onInstalled(), aby zapisywać ustawienia lokalne, a zdarzenie onSuspend() – do wykonywania prostych zadań czyszczenia przed wczytaniem strony zdarzenia.

Zapisywanie ustawień lokalnych

Aplikacja chrome.runtime.onInstalled() jest wywoływana po pierwszym zainstalowaniu lub aktualizacji aplikacji. Każde wywołanie tej funkcji powoduje wywołanie zdarzenia onInstalled. Strona wydarzenia może nasłuchiwać tego wydarzenia i używać interfejsu Storage API do przechowywania i aktualizowania ustawień lokalnych (zobacz też Opcje miejsca na dane).

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

Zapobieganie utracie danych

Użytkownicy mogą odinstalować Twoją aplikację w dowolnym momencie. Po jej odinstalowaniu nie zostaje uruchomiony żaden kod ani prywatne dane. Może to spowodować utratę danych, ponieważ użytkownicy mogą odinstalowywać aplikację, która zawiera niezsynchronizowane dane i edytowane lokalnie. Schowaj dane, aby ich nie utracić.

Zapisz ustawienia użytkownika, aby zapewnić, że po ponownym zainstalowaniu aplikacji pochodzące z nich dane użytkownika będą nadal dostępne do ponownego użycia. Za pomocą interfejsu Storage API (storage.sync) dane użytkowników można automatycznie synchronizować za pomocą synchronizacji Chrome.

Czyszczenie danych przed zamknięciem aplikacji

Środowisko wykonawcze aplikacji wysyła zdarzenie onSuspend() na stronę zdarzenia, zanim je wyładuje. Strona zdarzenia może nasłuchiwać tego zdarzenia, wykonywać zadania czyszczenia i zapisywać stan przed zamknięciem aplikacji.

Po wywołaniu tego zdarzenia środowisko wykonawcze aplikacji rozpoczyna proces zamykania aplikacji. Jeśli aplikacja ma otwarte okna, w przyszłości można ją uruchomić ponownie za pomocą zdarzenia onRestarted. W takim przypadku aplikacja powinna zapisać bieżący stan w pamięci trwałej, aby mogła uruchomić się ponownie w tym samym stanie, jeśli otrzyma zdarzenie onRestarted. Aplikacja ma tylko kilka sekund na zapisanie jej stanu, po czym zostaje zakończona, dlatego warto stopniowo zapisywać stan aplikacji, gdy działa ona prawidłowo.

Po otrzymaniu zdarzenia onSuspend żadne kolejne zdarzenia nie będą już dostarczane do aplikacji, chyba że z jakiegoś powodu zawieszenie nie zostanie przerwane. W takim przypadku element onSuspendCanceled zostanie dostarczony do aplikacji, a aplikacja nie zostanie wyładowana z pamięci.

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