Жизненный цикл приложения Chrome

Среда выполнения приложения и страница событий отвечают за управление жизненным циклом приложения. Среда выполнения приложения управляет установкой приложения, управляет страницей событий и может закрыть приложение в любое время. Страница событий прослушивает события из среды выполнения приложения и управляет тем, что и как запускается.

Как работает жизненный цикл

Среда выполнения приложения загружает страницу событий с рабочего стола пользователя, и запускается событие onLaunch() . Это событие сообщает странице события, какие окна запускать и их размеры.

как работает жизненный цикл приложения

Если на странице событий нет исполняемого кода JavaScript, ожидающих обратных вызовов и открытых окон, среда выполнения выгружает страницу событий и закрывает приложение. Перед выгрузкой страницы события запускается событие onSuspend() . Это дает странице события возможность выполнять простые задачи по очистке перед закрытием приложения.

Создать страницу и окна мероприятия

Все приложения должны иметь страницу событий. Эта страница содержит логику приложения верхнего уровня без собственного пользовательского интерфейса и отвечает за создание окон для всех других страниц приложения.

Создать страницу мероприятия

Чтобы создать страницу события, включите поле «фон» в манифест приложения и включите файл background.js в массив сценариев. Любые библиотечные сценарии, используемые на странице события, необходимо сначала добавить в поле «фон»:

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

Страница вашего мероприятия должна включать функцию onLaunched() . Эта функция вызывается, когда ваше приложение запускается каким-либо образом:

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

Создать окна

Страница мероприятия может создать одно или несколько окон по своему усмотрению. По умолчанию эти окна создаются с помощью сценария, подключающегося к странице событий, и могут быть напрямую доступны для сценариев со страницы событий.

Окна в приложениях Chrome не связаны ни с одним окном браузера Chrome. У них есть дополнительный фрейм со строкой заголовка и элементами управления размером, а также рекомендуемый идентификатор окна. Windows без идентификаторов не восстановит свой размер и местоположение после перезагрузки.

Вот пример окна, созданного из 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
  });
});

Включая данные о запуске

В зависимости от того, как запускается ваше приложение, вам может потребоваться обработка данных запуска на странице событий. По умолчанию данные запуска отсутствуют, когда приложение запускается с помощью средства запуска приложений. Для приложений, имеющих обработчики файлов, необходимо обработать параметр launchData.items , чтобы разрешить их запуск с файлами.

Прослушивание событий времени выполнения приложения

Среда выполнения приложения контролирует установку, обновление и удаление приложения. Вам не нужно ничего делать для настройки среды выполнения приложения, но ваша страница событий может прослушивать событие onInstalled() для хранения локальных настроек и событие onSuspend() для выполнения простых задач очистки перед тем, как страница события будет выгружен.

Сохранение локальных настроек

chrome.runtime.onInstalled() вызывается при первой установке вашего приложения или при его обновлении. При каждом вызове этой функции запускается событие onInstalled . Страница событий может прослушивать это событие и использовать API хранилища для хранения и обновления локальных настроек (см. также Параметры хранилища ).

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

Предотвращение потери данных

Пользователи могут удалить ваше приложение в любое время. При удалении не остается никакого исполняемого кода или личных данных. Это может привести к потере данных, поскольку пользователи могут удалять приложение, содержащее локально отредактированные несинхронизированные данные. Вам следует хранить данные, чтобы предотвратить их потерю.

Как минимум, вам следует хранить пользовательские настройки, чтобы, если пользователи переустановят ваше приложение, их информация по-прежнему была доступна для повторного использования. Используя Storage API ( Storage.sync ), пользовательские данные можно автоматически синхронизировать с помощью синхронизации Chrome.

Очистка перед закрытием приложения

Среда выполнения приложения отправляет событие onSuspend() на страницу событий перед ее выгрузкой. Ваша страница события может прослушивать это событие, выполнять задачи по очистке и сохранять состояние перед закрытием приложения.

После возникновения этого события среда выполнения приложения запускает процесс закрытия приложения. Если в приложении есть открытые окна, в будущем его можно будет перезапустить через событие onRestarted . В этом случае приложение должно сохранить свое текущее состояние в постоянном хранилище, чтобы оно могло перезапуститься в том же состоянии, если получит событие onRestarted . У приложения есть всего несколько секунд, чтобы сохранить свое состояние, после чего оно будет прекращено, поэтому рекомендуется постепенно сохранять состояние приложения, пока приложение работает нормально.

После получения onSuspend никакие дальнейшие события не будут доставляться в приложение, если только приостановка не будет прервана по какой-либо причине. В этом случае onSuspendCanceled будет доставлен в приложение, и приложение не будет выгружено.

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