מחזור החיים של אפליקציית Chrome

זמן הריצה ודף האירוע של האפליקציה אחראים לניהול מחזור החיים של האפליקציה. זמן הריצה של האפליקציה מנהל את התקנת האפליקציה, שולט בדף האירוע ויכול לכבות את האפליקציה בכל שלב. בדף האירועים מתבצע זיהוי של אירועים בזמן הריצה של האפליקציה, ומתבצע ניהול של הפרטים שיושקו ואיך.

איך פועל מחזור החיים

זמן הריצה של האפליקציה טוען את דף האירוע משולחן העבודה של המשתמש והאירוע onLaunch() מופעל. האירוע הזה מורה לדף האירוע אילו חלונות להפעיל ומה המאפיינים שלהם.

איך עובד מחזור החיים של האפליקציה

כשלדף האירוע אין הרצה של JavaScript, אין קריאות חוזרות (callback) וחלונות פתוחים, בזמן הריצה, מתבצעת הסרה של דף האירוע והאפליקציה נסגרת. לפני שפורקים את דף האירוע, האירוע onSuspend() מופעל. כך אפשר לבצע משימות פשוטות לניקוי דף האירוע לפני שסוגרים את האפליקציה.

יצירת דף וחלונות של אירוע

לכל אפליקציה חייב להיות דף אירוע. הדף הזה מכיל את הלוגיקה ברמה העליונה של האפליקציה ללא ממשק משתמש משל עצמה, והוא אחראי ליצירת החלונות של כל שאר דפי האפליקציה.

יצירת דף אירוע

כדי ליצור את דף האירוע, צריך לכלול את השדה "Background" בקובץ המניפסט של האפליקציה ולכלול את 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. יש להם מסגרת אופציונלית עם סרגל כותרת ופקדי גודל, ומזהה חלון מומלץ. חלונות ללא מזהים לא ישוחזרו לגודל ולמיקום שלהם אחרי ההפעלה מחדש.

הנה חלון לדוגמה שנוצר מ-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
  });
});

כולל נתוני הפעלה

בהתאם לאופן שבו האפליקציה שלכם הושקה, יכול להיות שתצטרכו לטפל בנתוני ההפעלה בדף האירוע. כברירת מחדל, אין נתוני הפעלה כשהאפליקציה מופעלת על ידי מרכז האפליקציות. באפליקציות שיש בהן רכיבי handler של קבצים, צריך לטפל בפרמטר 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.
});