Improving Layout Performance - تحسين اداء الواجهات

layout هي مفتاح تطبيقات الاندرويد التي لها تأثير مباشر على تجربة المستخدم UX اذا كانت سيئة التنفيذ يمكن ان تؤدي الى استهلاك الذاكرة
وهنا سوف نتكلم عن كيف تكون الواجهات سلسة وتاخذ مساحة قليلة من الذاكرة

الدرس الاول 

  1. تحسين التسلسل الهرمي للواجهات - Optimizing Layout Hierarchies

هو نفس فكره صفاح الويب المعقدة تأخذ وقت في التحميل , فأن التسلسل الهرمي اذا كان معقد جدا يمكن ا يسبب مشاكل في الاداء 

من المفاهيم الخاطئه الشائعة الن استخدام layout بسيطة يؤدي الى كفاءه اكثر 
على كل حال عند layout او widget تظيفها الى التطبيق الخاص بك تتطلب تهيئه و تخطيط و رسم مثلا

عند انشاء linearLayout متداخلة هذا يودي الى تسلسل هرمي عميق للغاية وعلاوة على ذلك عند استخدام مثلا layout_weight يمكن ان يكون مكلف جدا حيث يحتاج كل layout ابن لقياس مرتين وخاصتا  عند استخدام layoutInflater مرارا وتكرارا

1. فحص الواجهات 

يحتوي android SDK على اداة hierarvhy view تساعد على تحليل layout عند تشغيل التطبيق تستخدم لاكتشاف الاخطاء واختناقات الاداء  
تعمل هذه الاداة على تحديد عمليات التشغيل على الجهاز الحقيقي او المحاكي ثم عرض شجرة layout 

على سبيل المثال :
اذا كن لدينا هذه layout تحتوي علي ImageView و TextVliew على هذا الشكل  

 

hierarchy Viewer tool توجد في Android Device Monitor

 اختار منها windows واضغط على herarchy viewer

 سوف يظهر هذا المخطط




2.مراجعة layout الخاص بك 


بلنظر الى الصوره السابقه يمكن ملاحظه التداخل في  layout هنا يمكن تحسين ذلك من خلال تسطيح المخطط وهذا بستعمال RelativeLayout  التي تمكن من انشاء مخطط مستوى 2 بدل 3 حسب الصوره التاليه : 


فائده قليلة كما تبدو ولكن هذا قد يتم ضربة عده مرات عند استخدام listView 

في بعض layout المعقده قد يحتاج النظام قياس عنصر في واجهة المستخدم لاكثر من مره وهذا يسمى double taxation لمزيد من المعلومات راجع   Performance and View Hierarchies 

3 . استخدام lint

من الافضل دائما تشغيل الاداة للبحث عن تحسينات على التسلسل الهرمي 
اضافه الاداة 
File>Settings>Project Settings



 بعض الأمثلة على قواعد lint 
  1. layout عديمة الفائدة : اذا كانت layout لاتحتوي على ابناء تكون غير مرئية اي عديمة الفائدة 
  2. اب عديم الفائدة : اذا كان الابن ليس لدية اخوان يكون الاب عديم الفائدة 
  3. عمق layout : العمق الزائد عن المعقول سيء للاداء ( العمق الافتراضي هو 10 ) 




تعليقات

المشاركات الشائعة من هذه المدونة

مقدمة عن Dagger 2

local function

Architecture patterns in Android part 1 - معماريه كتابه الكود في الاندرويد جزء 1