عمليات نقل القشرة

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

يتضمّن تتبُّع تأثيرات الانتقال بيانات عن كل تأثير انتقال ضمن غلاف WindowManager (WM)، من خادم النظام والغلاف على حد سواء. تفعِّل أداة Droidfood هذا التتبُّع نهائيًا وتضمّنه تلقائيًا في تقارير الأخطاء.

لمزيد من المعلومات حول جمع التتبُّع، يُرجى الاطّلاع على المقالة تأثيرات الانتقال بين الأغلفة.

يعرض عارض تأثيرات الانتقال في Winscope هذه المعلومات لتتبُّعات تأثيرات الانتقال التي تحتوي على معلومات من جهة الخادم والعميل على حد سواء. يتضمّن العارض عرض سجلّ جدول على اليمين يعرض معلومات عالية المستوى عن تأثيرات الانتقال، وعرضًا تفصيليًا على اليسار لكل تأثير انتقال:

تحليل تتبُّع انتقال Shell

الشكل 1: تحليل تتبُّع تأثيرات الانتقال بين الأغلفة

العرض في جدول

يتضمّن العرض في جدول ما يلي:

  • رقم التعريف: رقم تعريف تأثير الانتقال الذي يتم إنشاؤه لأغراض تصحيح الأخطاء فقط.
  • النوع: نوع تأثير الانتقال، كما هو محدّد في Transitions.java.
  • وقت الإرسال: الطابع الزمني الذي تم فيه إرسال تأثير الانتقال من الخادم إلى الغلاف لمعالجته.
  • وقت الإرسال: الطابع الزمني الذي يتم فيه إرسال تأثير الانتقال إلى المعالج لبدء تشغيله.
  • المدة: الوقت الذي استغرقه تأثير الانتقال من بدء تشغيله إلى انتهائه.
  • الحالة: ما إذا كان تأثير الانتقال:
    • تم تشغيله:: تم تشغيله.
    • تم إيقافه: تم إيقافه قبل تشغيله. يمكن إيقاف تأثير الانتقال من جهة الغلاف أو WindowManager.
    • تم دمجه: تم دمجه بواسطة معالج تأثير الانتقال في تأثير انتقال آخر قيد التشغيل (يقرّر المعالج كيفية التعامل مع هذه الحالة).

العرض التفصيلي

بالإضافة إلى التفاصيل في العرض في جدول، يتضمّن العرض التفصيلي لتأثير الانتقال في قسم تأثير الانتقال المحدّد ما يلي:

  • handler: معالج تأثير الانتقال الذي عالج هذه الصورة المتحركة.
  • createTimeNs: الطابع الزمني الذي تم فيه إنشاء تأثير الانتقال على خادم WindowManager.
  • finishTimeNs: الطابع الزمني الذي يتم فيه إشعار خادم WindowManager بأنّ تأثير الانتقال قد انتهى من التشغيل على جهة الغلاف.
  • endTransactionId: معاملة SurfaceFlinger النهائية المضمّنة في تأثير الانتقال هذا.
  • startTransactionId: معاملة SurfaceFlinger الأولية المضمّنة في تأثير الانتقال هذا.
  • targets: قائمة بالمشاركين في تأثير الانتقال.
  • type: نوع تأثير الانتقال، كما هو محدّد في Transitions.java.

الأهداف

الأهداف هي العناصر المشارِكة في تأثير الانتقال، وعادةً ما تكون الأنشطة أو المهام. يتم تسجيل المعلومات التالية لكل هدف:

  • layerId: الطبقة التي يتم تحريكها (من التسلسل الهرمي لـ SurfaceFlinger).
  • mode: نوع الصورة المتحركة التي يتم تنفيذها على هذه الطبقة.
  • windowId: النافذة التي يتم تحريكها (من التسلسل الهرمي لـ WindowManager).
  • flags: مجموعة العلامات الجديدة التي يتم تطبيقها على الطبقة.