Środowisko wykonawcze aplikacji i strona zdarzenia odpowiadają za zarządzanie cyklem życia aplikacji. Czas wykonywania aplikacji zarządza instalacją aplikacji, kontroluje stronę zdarzenia i może w każdej chwili ją zamknąć. Strona zdarzenia nasłuchuje zdarzeń ze środowiska wykonawczego aplikacji i zarządza tym, które elementy zostaną uruchomione oraz w jaki sposób.
Jak działa cykl życia
Środowisko uruchomieniowe aplikacji wczytuje stronę wydarzenia z pulpitu użytkownika i wyzwala zdarzenie onLaunch()
. To zdarzenie informuje stronę wydarzenia, które okna należy otworzyć i jakie mają one mieć wymiary.
Jeśli na stronie zdarzenia nie ma wykonywanego kodu JavaScript, oczekujących wywołań zwrotnych ani otwartych okien, środowisko wykonawcze wyczyści stronę zdarzenia i zamyka aplikację. Przed wyłączeniem strony zdarzenia wywoływane jest zdarzenie onSuspend()
. Dzięki temu strona wydarzenia może wykonać proste zadania czyszczenia, zanim aplikacja zostanie zamknięta.
Tworzenie strony i okienek wydarzenia
Wszystkie aplikacje muszą mieć stronę wydarzenia. Ta strona zawiera logikę najwyższego poziomu aplikacji bez własnego interfejsu użytkownika. Jest odpowiedzialna za tworzenie okien wszystkich innych stron aplikacji.
Utwórz stronę wydarzenia
Aby utworzyć stronę zdarzenia, dodaj w pliku manifestu aplikacji pole „background” i uwzględnij tablicę background.js
w tablicy skryptów. Wszystkie skrypty biblioteki używane przez stronę wydarzenia należy najpierw dodać do pola „tło”:
"background": {
"scripts": [
"foo.js",
"background.js"
]
}
Strona zdarzenia musi zawierać funkcję onLaunched()
. Ta funkcja jest wywoływana, gdy aplikacja jest uruchamiana na dowolny sposób:
chrome.app.runtime.onLaunched.addListener(function() {
// Tell your app what to launch and how.
});
Tworzenie okien
Strona wydarzenia może tworzyć okna według własnego uznania. Domyślnie te okna są tworzone za pomocą połączenia skryptu z stroną zdarzenia i można je bezpośrednio skryptować na stronie zdarzenia.
Okna w aplikacjach Chrome nie są powiązane z żadnymi oknami przeglądarki Chrome. Mają opcjonalny element z paskiem tytułu i elementami sterującymi rozmiarem oraz zalecany identyfikator okna. Okna bez identyfikatorów nie zostaną przywrócone do pierwotnego rozmiaru i położenia po ponownym uruchomieniu.
Oto przykładowe okno utworzone z poziomu 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
});
});
Dołączanie danych o dacie wprowadzenia na rynek
W zależności od sposobu uruchamiania aplikacji może być konieczne przetwarzanie danych o jej uruchomieniu na stronie wydarzenia. Domyślnie nie ma danych o uruchomieniu, gdy aplikacja jest uruchamiana przez menu z aplikacjami. W przypadku aplikacji z modułami obsługi plików musisz obsłużyć parametr launchData.items
, aby można było je uruchamiać z plikami.
Nasłuchiwanie zdarzeń w czasie działania aplikacji
Środowisko wykonawcze aplikacji kontroluje liczbę instalacji, aktualizacji i odinstalowań. Nie musisz nic robić, aby skonfigurować środowisko uruchomieniowe aplikacji, ale strona zdarzenia może nasłuchiwać zdarzenia onInstalled()
, aby przechowywać ustawienia lokalne, oraz zdarzenia onSuspend()
, aby wykonywać proste zadania czyszczenia przed zwolnieniem pamięci przez stronę zdarzenia.
Przechowywanie ustawień lokalnych
chrome.runtime.onInstalled()
jest wywoływany, gdy aplikacja została zainstalowana po raz pierwszy lub została zaktualizowana. Przy każdym wywołaniu tej funkcji wywoływane jest zdarzenie onInstalled
. Strona zdarzenia może nasłuchiwać tego zdarzenia i używać interfejsu Storage API do przechowywania i aktualizowania ustawień lokalnych (patrz 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 każdej chwili. Po odinstalowaniu nie pozostaje żaden kod ani dane prywatne. Może to spowodować utratę danych, ponieważ użytkownicy mogą odinstalować aplikację, która zawiera edytowane lokalnie, niezsynchronizowane dane. Aby zapobiec utracie danych, należy je schować.
Musisz zapisać co najmniej ustawienia użytkownika, aby po ponownym zainstalowaniu aplikacji dane użytkownika były nadal dostępne do ponownego wykorzystania. Za pomocą interfejsu Storage API (storage.sync) dane użytkownika mogą być automatycznie synchronizowane z synchronizacją Chrome.
Czyszczenie przed zamknięciem aplikacji
Środowisko wykonawcze aplikacji wysyła zdarzenie onSuspend()
na stronę zdarzenia przed jego usunięciem. Strona zdarzenia może nasłuchiwać tego zdarzenia, wykonywać zadania sprzątania 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, może zostać w przyszłości uruchomiona ponownie za pomocą zdarzenia onRestarted
. W takim przypadku aplikacja powinna zapisać swój bieżący stan w trwałym magazynie danych, aby można było ją uruchomić ponownie w tym samym stanie, jeśli otrzyma zdarzenie onRestarted
. Aplikacja ma tylko kilka sekund na zapisanie stanu, po czym zostanie zamknięta. Dlatego warto zapisywać stan aplikacji stopniowo, gdy działa ona normalnie.
Po otrzymaniu onSuspend
żadne kolejne zdarzenia nie będą dostarczane do aplikacji, chyba że zawieszenie zostanie z jakiegoś powodu przerwane. W tym przypadku onSuspendCanceled
zostanie dostarczony do aplikacji i nie zostanie wyładowana z pamięci.
chrome.runtime.onSuspend.addListener(function() {
// Do some simple clean-up tasks.
});