مراحل نشاط تطبيق Chrome

تتحمّل صفحة أحداث وقت تشغيل التطبيق مسؤولية إدارة دورة حياة التطبيق. يدير وقت تشغيل التطبيق عملية تثبيت التطبيق ويتحكّم في صفحة الحدث ويمكنه إيقاف التطبيق في أي وقت. وتستمع صفحة الحدث إلى الأحداث من وقت تشغيل التطبيق وتدير ما يتم إطلاقه وكيفية إطلاقه.

آلية عمل رحلة المستخدِم

تحمِّل مدة تشغيل التطبيق صفحة الحدث من كمبيوتر مكتبي للمستخدم ويتم تشغيل الحدث onLaunch(). يخبر هذا الحدث صفحة الحدث بالنوافذ التي سيتم إطلاقها وأبعادها.

آلية عمل دورة حياة التطبيق

عندما لا تتضمّن صفحة الحدث رمز JavaScript قيد التنفيذ أو عمليات استدعاء معلّقة أو نوافذ مفتوحة، يُلغي الوقت التشغيلي تحميل صفحة الحدث ويغلق التطبيق. قبل إلغاء تحميل صفحة الحدث، يتم تشغيل حدث onSuspend(). وهذا يعطي صفحة الحدث فرصة للقيام بمهام التنظيف البسيطة قبل إغلاق التطبيق.

إنشاء صفحة الحدث والنوافذ

يجب أن تتضمّن جميع التطبيقات صفحة حدث. تحتوي هذه الصفحة على منطق المستوى الأعلى للتطبيق بدون أي واجهة مستخدم خاصة به، وهي مسؤولة عن إنشاء النوافذ لجميع صفحات التطبيق الأخرى.

إنشاء صفحة حدث

لإنشاء صفحة الحدث، يجب تضمين حقل "الخلفية" في بيان التطبيق وتضمين 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. وتتضمّن إطارًا optional مع شريط العنوان وعناصر التحكّم في الحجم ورقم تعريف نافذة مقترَح. لن تتم إعادة حجم النوافذ وموقعها الجغرافي بعد إعادة التشغيل إذا لم تكن لها أرقام تعريف.

في ما يلي نموذج نافذة تم إنشاؤها من 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
  });
});

بما في ذلك بيانات الإطلاق

استنادًا إلى طريقة تشغيل تطبيقك، قد تحتاج إلى معالجة بيانات الإطلاق في صفحة الحدث. بشكلٍ default، لا تتوفّر بيانات التشغيل عندما يبدأ مشغّل التطبيقات تشغيل التطبيق. بالنسبة إلى التطبيقات التي تحتوي علىمعالجاتملف، عليك معالجة المَعلمة 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() إلى صفحة الحدث قبل إلغاء تحميله. يمكن لصفحة الحدث الاستماع إلى هذا الحدث وتنفيذ مهام التنظيف وحفظ الحالة قبل إغلاق التطبيق.

بعد بدء هذا الحدث، يبدأ وقت تشغيل التطبيق عملية إغلاق التطبيق. إذا كان التطبيق يحتوي على ملف windows مفتوحًا، قد تتم إعادة تشغيله في المستقبل من خلال الحدث onRestarted. في هذه الحالة، يجب أن يحفظ التطبيق حالته الحالية في مساحة التخزين الثابتة حتى تتمكّن من إعادة التشغيل في الحالة نفسها إذا تلقّى حدث onRestarted. لا يتوفّر للتطبيق سوى بضع ثوانٍ لحفظ حالته، وبعد ذلك سيتم إيقافه، لذا من الأفضل حفظ حالة التطبيق بشكل تدريجي أثناء تشغيله بشكل طبيعي.

بعد تلقّي onSuspend، لن يتم إرسال أي أحداث أخرى إلى التطبيق، ما لم يتم إلغاء التعليق لسبب ما. في هذه الحالة، سيتم تسليم onSuspendCanceled إلى التطبيق، ولن يتم تفريغه.

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