Trang sự kiện và thời gian chạy ứng dụng chịu trách nhiệm quản lý vòng đời ứ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 những cửa sổ cần khởi chạy và kích thước của các cửa sổ đó.
Khi trang sự kiện không có JavaScript đang thực thi, không có lệnh gọi lại đ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 sự kiện và cửa sổ
Tất cả ứng dụng phải có trang sự kiện. Trang này chứa logic cấp cao nhất của ứng dụng 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 thêm 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 có hàm onLaunched()
. Hàm này được gọi khi ứng dụng của bạn được khởi chạy 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ổ
Trang sự kiện có thể tạo một hoặc nhiều cửa sổ theo ý muốn. 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à có thể viết tập lệnh trực tiếp bằng trang sự kiện.
Các cửa sổ trong Ứng dụng Chrome không liên kết với bất kỳ cửa sổ trình duyệt Chrome nào. Các cửa sổ này có một khung không bắt buộc với thanh tiêu đề và các chế độ điều khiển kích thước, cũng như mã cửa sổ được đề xuất. Các cửa sổ không có mã nhận dạng sẽ không được khôi phụ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 cả dữ liệu ra mắt
Tuỳ thuộc vào cách ứng dụng của bạn được khởi chạy, bạn có thể cần xử lý dữ liệu khởi chạy trong trang sự kiện. Theo mặc định, không có dữ liệu khởi chạy nào khi ứng dụng được trình chạy ứng dụng khởi độ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 đó bằng tệp.
Theo dõi các sự kiện trong thời gian chạy ứng dụ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 làm gì để thiết lập môi trường 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 tác vụ dọn dẹp đơn giản trước khi trang sự kiện bị 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 về 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 gỡ cài đặt, không có mã thực thi hoặc dữ liệu riêng tư nào bị bỏ lại. Điều này có thể dẫn đến việc mất dữ liệu vì người dùng có thể đang gỡ cài đặt một ứng dụng có dữ liệu chưa đồng bộ hoá, được chỉnh sửa cục bộ. Bạn nên lưu trữ dữ liệu để tránh mất dữ liệu.
Ở mức tối thiểu, 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ó thể sử dụng lại được. Bằng cách sử dụng 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á Chrome.
Dọn dẹp trước khi ứng dụng đóng
Môi trườ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, thực hiện các tác vụ dọn dẹp và 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 quy trình đóng ứng dụng. Nếu ứng dụng đang mở
cửa sổ, ứng dụng có thể 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 sẽ lưu trạng thái hiện tại vào bộ nhớ cố đị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 đó trạng thái sẽ bị chấm dứt. Vì vậy, bạn nên lưu dần trạng thái của ứng dụng trong khi ứng dụng đang chạy bình thường.
Sau khi nhận được onSuspend
, sẽ không có sự kiện nào khác được phân phối đến ứng dụng, trừ phi quá trì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.
});