Vòng đời của ứng dụng Chrome

Thời gian chạy ứng dụng và trang sự kiện chịu trách nhiệm quản lý vòng đời của ứng dụng. Thời gian chạy ứng dụng quản lý việc cài đặt ứng dụng, kiểm soát trang sự kiện và có thể tắt ứng dụng bất cứ lúc nào. Trang sự kiện theo dõi các sự kiện từ thời gian chạy ứng dụng và quản lý những nội dung được khởi chạy cũng như cách thức khởi chạy.

Cách hoạt động của vòng đời

Thời gian chạy ứng dụng tải trang sự kiện từ máy tính của người dùng và sự kiện onLaunch() được kích hoạt. Sự kiện này cho trang sự kiện biết cửa sổ nào nên khởi chạy và kích thước của các cửa sổ đó.

cách hoạt động của vòng đời của ứng dụng

Khi trang sự kiện không có JavaScript đang thực thi, không có lệnh gọi lại nào đang chờ xử lý và không có cửa sổ đang mở, thời gian chạy sẽ huỷ tải trang sự kiện và đóng ứng dụng. Trước khi huỷ tải trang sự kiện, sự kiện onSuspend() sẽ được kích hoạt. Điều này giúp trang sự kiện có cơ hội thực hiện các thao tác dọn dẹp đơn giản trước khi ứng dụng đóng.

Tạo trang và cửa sổ sự kiện

Tất cả ứng dụng đều phải có trang sự kiện. Trang này chứa logic cấp cao nhất của ứng dụng mà không có giao diện người dùng riêng và chịu trách nhiệm tạo cửa sổ cho tất cả các trang ứng dụng khác.

Tạo trang sự kiện

Để tạo trang sự kiện, hãy đưa trường "background" vào tệp kê khai ứng dụng và đưa background.js vào mảng tập lệnh. Trước tiên, bạn cần thêm mọi tập lệnh thư viện mà trang sự kiện sử dụng vào trường "nền":

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

Trang sự kiện của bạn phải bao gồm hàm onLaunched(). Hàm này được gọi khi khởi chạy ứng dụng theo bất kỳ cách nào:

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

Tạo cửa sổ

Một trang sự kiện có thể tuỳ ý tạo một hoặc nhiều cửa sổ. Theo mặc định, các cửa sổ này được tạo bằng kết nối tập lệnh với trang sự kiện và trang sự kiện có thể viết tập lệnh trực tiếp.

Cửa sổ trong Ứng dụng Chrome không được liên kết với bất kỳ cửa sổ trình duyệt Chrome nào. Các mẫu này có một khung không bắt buộc với thanh tiêu đề, các thành phần điều khiển kích thước và mã cửa sổ được đề xuất. Windows không có mã nhận dạng sẽ không khôi phục được về kích thước và vị trí sau khi khởi động lại.

Dưới đây là cửa sổ mẫu được tạo từ 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
  });
});

Bao gồm dữ liệu khởi chạy

Tuỳ thuộc vào cách phát hành ứng dụng, bạn có thể cần phải xử lý dữ liệu ra mắt trong trang sự kiện. Theo mặc định, không có dữ liệu nào về việc khởi chạy khi ứng dụng được khởi động bằng trình chạy ứng dụng. Đối với các ứng dụng có trình xử lý tệp, bạn cần xử lý tham số launchData.items để cho phép khởi chạy các ứng dụng đó cùng với tệp.

Theo dõi các sự kiện thời gian chạy ứng dụng

Môi trường thời gian chạy ứng dụng kiểm soát các lượt cài đặt, cập nhật và gỡ cài đặt ứng dụng. Bạn không cần phải làm gì để thiết lập thời gian chạy ứng dụng, nhưng trang sự kiện của bạn có thể theo dõi sự kiện onInstalled() để lưu trữ các chế độ cài đặt cục bộ và sự kiện onSuspend() để thực hiện các thao tác dọn dẹp đơn giản trước khi trang sự kiện bị huỷ tải.

Lưu trữ chế độ cài đặt cục bộ

chrome.runtime.onInstalled() được gọi khi ứng dụng của bạn được cài đặt lần đầu hoặc khi ứng dụng được cập nhật. Bất cứ khi nào hàm này được gọi, sự kiện onInstalled sẽ được kích hoạt. Trang sự kiện có thể theo dõi sự kiện này và sử dụng API Bộ nhớ để lưu trữ và cập nhật các chế độ cài đặt cục bộ (xem thêm Tuỳ chọn bộ nhớ).

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

Ngăn chặn mất dữ liệu

Người dùng có thể gỡ cài đặt ứng dụng của bạn bất cứ lúc nào. Khi bị gỡ cài đặt, không có mã hoặc dữ liệu riêng tư nào đang thực thi bị bỏ lại. Điều này có thể dẫn đến mất dữ liệu vì người dùng có thể gỡ cài đặt một ứng dụng có dữ liệu đã chỉnh sửa cục bộ và chưa đồng bộ hoá. Bạn nên lưu trữ dữ liệu để tránh mất dữ liệu.

Ít nhất, bạn nên lưu trữ chế độ cài đặt của người dùng để nếu người dùng cài đặt lại ứng dụng, thì thông tin của họ vẫn có sẵn để sử dụng lại. Khi sử dụng Storage API (API Bộ nhớ) (storage.sync), dữ liệu người dùng có thể được tự động đồng bộ hoá với tính năng đồng bộ hoá của Chrome.

Dọn dẹp trước khi đóng ứng dụng

Thời gian chạy ứng dụng sẽ gửi sự kiện onSuspend() đến trang sự kiện trước khi huỷ tải sự kiện đó. Trang sự kiện của bạn có thể theo dõi sự kiện này và thực hiện các tác vụ dọn dẹp cũng như lưu trạng thái trước khi ứng dụng đóng.

Sau khi sự kiện này được kích hoạt, thời gian chạy ứng dụng sẽ bắt đầu quá trình đóng ứng dụng. Nếu ứng dụng có cửa sổ đang mở, thì ứng dụng có thể được khởi động lại trong tương lai thông qua sự kiện onRestarted. Trong trường hợp này, ứng dụng nên lưu trạng thái hiện tại vào bộ nhớ ổn định để có thể khởi động lại ở cùng trạng thái nếu nhận được sự kiện onRestarted. Ứng dụng chỉ có vài giây để lưu trạng thái, sau đó ứng dụng sẽ bị chấm dứt. Vì vậy, bạn nên lưu dần trạng thái ứng dụng trong khi ứng dụng đang chạy bình thường.

Sau khi nhận được onSuspend, hệ thống sẽ không gửi thêm sự kiện nào nữa cho ứng dụng, trừ phi lệnh tạm ngưng bị huỷ vì lý do nào đó. Trong trường hợp này, onSuspendCanceled sẽ được phân phối đến ứng dụng và ứng dụng sẽ không bị huỷ tải.

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