סביבת זמן הריצה של האפליקציה ודף האירועים אחראים לניהול מחזור החיים של האפליקציה. סביבת זמן הריצה של האפליקציה מנהלת את התקנת האפליקציה, שולטת בדף האירוע ויכולה לכבות את האפליקציה בכל שלב. בדף האירוע מתבצעת האזנה לאירועים בזמן הריצה של האפליקציה, ומנהלת מה מופעל ואיך הוא מופעל.
איך פועל מחזור החיים
סביבת זמן הריצה של האפליקציה טוענת את דף האירוע מהמחשב של המשתמש, והאירוע onLaunch()
מופעל. האירוע הזה מאפשר לדף האירוע לדעת אילו חלונות להפעיל ואת המימדים שלהם.
כשדף האירוע לא מפעיל את JavaScript, אין קריאות חוזרות (callbacks) בהמתנה ואין חלונות פתוחים, בזמן הריצה מסירים את הטעינה של דף האירוע וסוגרים את האפליקציה. לפני הסרת הטעינה של דף האירוע, האירוע onSuspend()
מופעל. כך לדף האירוע תהיה הזדמנות לבצע משימות ניקוי פשוטות לפני שהאפליקציה תיסגר.
יצירת דף אירוע וחלונות
לכל אפליקציה צריך להיות דף אירוע. הדף הזה מכיל את הלוגיקה ברמה העליונה של האפליקציה, ללא ממשק משתמש משלו, והוא אחראי ליצירת החלונות של כל שאר דפי האפליקציה.
יצירת דף אירוע
כדי ליצור את דף האירוע, צריך לכלול את השדה background במניפסט של האפליקציה ואת הערך background.js
במערך הסקריפטים. קודם צריך להוסיף לשדה 'background' את כל הסקריפטים מהספרייה שבהם נעשה שימוש בדף האירוע:
"background": {
"scripts": [
"foo.js",
"background.js"
]
}
דף האירוע חייב לכלול את הפונקציה onLaunched()
. היא מופעלת כשהאפליקציה מופעלת בדרך כלשהי:
chrome.app.runtime.onLaunched.addListener(function() {
// Tell your app what to launch and how.
});
יצירת חלונות
דף אירוע יכול ליצור חלון אחד או יותר לפי שיקול דעתו. כברירת מחדל, החלונות האלה נוצרים עם חיבור סקריפט לדף האירוע, וניתן לכתוב סקריפט ישירות בדף האירוע.
חלונות באפליקציות של Chrome לא משויכים לחלונות של דפדפן Chrome. הם כוללים מסגרת אופציונלית עם סרגל כותרות ואמצעי בקרה על הגודל, ומזהה חלון מומלץ. חלונות ללא מזהי חלון לא ישוחזרו למיקום ולגודל שלהם אחרי ההפעלה מחדש.
הנה חלון לדוגמה שנוצר מ-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
});
});
כולל נתוני השקה
בהתאם לאופן שבו האפליקציה מושקית, יכול להיות שתצטרכו לטפל בנתוני ההשקה בדף האירוע. כברירת מחדל, אין נתוני הפעלה כשמרכז האפליקציות מפעיל את האפליקציה. באפליקציות עם handlers של קבצים, צריך לטפל בפרמטר launchData.items
כדי לאפשר הפעלה באמצעות קבצים.
האזנה לאירועים בסביבת זמן הריצה של האפליקציה
זמן הריצה של האפליקציה קובע את ההתקנות, העדכונים וההסרות של האפליקציה. אין צורך לבצע שום פעולה כדי להגדיר את סביבת זמן הריצה של האפליקציה, אבל דף האירוע יכול להאזין לאירוע onInstalled()
כדי לאחסן את ההגדרות המקומיות, ולאירוע onSuspend()
כדי לבצע משימות ניקוי פשוטות לפני שהדף של האירוע פורק.
אחסון הגדרות מקומיות
chrome.runtime.onInstalled()
נקראת כשהאפליקציה מותקנת בפעם הראשונה או כשהיא מתעדכנת. בכל פעם שמפעילים את הפונקציה הזו, האירוע onInstalled
מופעל. דף האירוע יכול להאזין לאירוע הזה ולהשתמש ב-Storage 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.
});