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

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

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

لمزيد من المعلومات عن جمع عمليات التتبُّع، يُرجى الاطّلاع على عمليات انتقال Shell.

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

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

الشكل 1: تحليل عمليات تتبُّع انتقالات Shell

العرض في جدول

يحتوي العرض في الجدول على ما يلي:

  • Id: معرّف الانتقال الذي يتم إنشاؤه لتصحيح الأخطاء فقط.
  • النوع: نوع الانتقال، كما هو محدّد في Transitions.java
  • وقت الإرسال: الطابع الزمني الذي تم إرسال عملية النقل من الخادم إلى القشرة لمعالجتها.
  • وقت الإرسال: الطابع الزمني عند إرسال عملية النقل إلى معالج لبدء التشغيل
  • المدة: الوقت الذي استغرقته عملية النقل من بدء تشغيل الفيديو إلى انتهائه
  • الحالة: إذا كان الانتقال:
    • PLAYED:: تم تشغيله.
    • تم إلغاؤه: تم إلغاؤه قبل تشغيله. يمكن إلغاء عملية انتقال من جانب shell أو WM.
    • مُدمَج: تم دمجه من قِبل معالِج الانتقال في بعض عمليات الانتقال الأخرى التي يتم تشغيلها حاليًا (يحدد المعالِج كيفية التعامل مع هذا).

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

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

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

الأهداف

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

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