تحسين وجه الساعه

الإعلانات

تحسين وجه الساعه

 

تحسين وجه الساعه

يتم تشغيل وجه الساعة لأنظمة تشغيل الساعات بشكلٍ مستمر، لذلك يجب أن تستخدم الطاقة بكفاءة.تحسين وجه الساعه 

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

 

اقرأ المصادر التالية:

أوجه الساعة التفاعليه
جعل وجه الساعة أفضل أداءً
تقليل BIND_LISTENER
نموذج وجه الساعه

 

 

 

 

التحسين الأساسي


يحتوي هذا القسم على أفضل الممارسات لتحسين الكفاءة. تحسين وجه الساعه تحسين وجه الساعه

 

 

لون وسطوع وجه الساعة

الألوان الداكنة تحافظ على بطارية الساعة. فيما يلي توصيات لإعداد خلفية وجه الساعة، لتحسين إستخدام بطارية وجه الساعة:

اللون. كلما أمكن، إستخدم خلفية سوداء.

السطوع. عندما تمنع متطلبات وجه الساعة، من إستخدام الخلفية السوداء، يجب عليك السعي للحفاظ على سطوع لون الخلفية..

“عند أو أقل من 25 في المائة” على مقياس HSV (الدرجة Hue ، التشبع Saturation ، القيمة Value) أو مقياس HSB.

على سبيل المثال، إذا إستخدمت فئة اللون لتعيين لون الخلفية، وقمت بتعريف اللون بإستخدام مقياس HSV..

فعليك إستسخدام 25 أو أقل لإعداد القيمة (أي، لإعداد السطوع).

 

 

 

إستخدام الإستدعاءات في WatchFaceService.Engine

تأكد من أن وجه الساعة لا ينفذ الحسابات إلا عندما يكون نشطاً؛ إستخدم الإستدعاءات في WatchFaceService.Engine.

ويفضل، إستخدام الدوال التالية الخاصة بتلك الفئة لتحديد ما إذا كان وجه الساعة مرئياً:

(onVisibilityChanged(boolean
()isVisible

بدلاً من ذلك، إستخدم الدوال التالية من نفس الفئة (WatchFaceService.Engine):

()onCreate
()onDestroy

 

 

 

إستخدام المستمعين المسجلين في واجهة DataClient

للإستماع إلى الأحداث، إستخدم المستمعين المباشرين المسجلين في DataClient.addListener.

على سبيل المثال، اقرأ مزامنة عناصر البيانات.

لا تستخدم WearableListenerService للإستماع إلى الأحداث، لأنه يستدعى سواء كان وجه الساعة نشطاً أم لا.

لمزيد من المعلومات، اقرأ تقليل BIND_LISTENER.

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

لأن BroadcastReceiver يستدعى سواء كان وجه الساعة نشطاً أم لا. ومع ذلك، يمكنك إستخدام الداله registerReceiver للفئة Context لتسجيل المستقبل.

 

 

 

إستخدم قدرات حيويه للتفاعل مع الهاتف

عندما يتطلب وجه الساعة تشغيل عملية على الهاتف، يجب تنفيذ هذا الكود فقط عندما يكون وجه الساعة نشطاً.

الطريقة الموصى بها، للسماح للتطبيق الموجود على الهاتف، بمعرفة أن وجه الساعة المتوافقة نشطاً..

تتمثل بإستخدام واجهة برمجة تطبيقات “عميل القدرات” CapabilityClient.

قم بتحديد القدرة التي تتم إضافتها، بشكلٍ حيوي في دالة ()onCreate من WatchFaceService.Engine.

و قم بإزالة القدرة بإستخدام الدالة ()onDestroy .

على سبيل المثال، تطبيق يقوم بجمع بيانات دورية، ليتم عرضها على وجه الساعة، يجب أن يسجل مستمع للقدرات، التي أعلن عنها وجه الساعة.

أضف منبهاً لجلب البيانات المحدّثة، ودفعها “إرسالها” إلى وجه الساعة، عندما يكون قابل للوصول.

قم بإزالة المنبه الدوري، إذا لم يعد وجه الساعة محدداً، أو إذا كانت الساعة بعيدة عن متناول اليد، أو تم إيقاف تشغيلها، أو إذا لم تتمكن من تلقي التحديثات.

 

 

 

مراقبة إستهلاك الطاقة

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

من قبل العمليات المختلفة على الساعه (ضمن الإعدادات> بطارية الساعه).

للحصول على معلومات حول الميزات المقدمة في أندرويد 5.0، والتي تساعدك على تحسين عمر البطارية، راجع المشروع Project Volta.

 

 

 

 

تسجيل إدراك التشفير لأوجه الساعه

إصدار الأندرويد 7.0 والإصدارات الأحدث، تتضمن دعماً للتشفير المستند إلى الملفات، وتسمح بتشغيل التطبيقات المدركة للتشفير

قبل أن يقدم المستخدم رمز المرور المشفر عند بدء التشغيل. يمكن أن يقلل ذلك من مدة الإنتقال…

من الرسوم المتحركة التمهيدية، إلى وجه الساعة، لمدة تصل إلى 30 ثانية.

لتمكين تمهيد أسرع، قم بإضافة "android:directBootAware="true إلى ملف إيضاح وجه الساعة.

ملاحظة: إستخدم هذه الميزة مع أوجة الساعة التي لا تستخدم وحدة تخزين مشفرة معتمدة.

 

 

 

 

 

 

أفضل الممارسات للرسوميات المتحركة


تساعد أفضل الممارسات في هذا القسم، على التقليل من إستهلاك الطاقة، من قبل الرسوميات المتحركة.

قلل معدل عرض إطارات الرسوم المتحركة

غالباً ما تكون الرسوم المتحركة، مكلفة من الناحية الحسابية، وتستهلك قدراً كبيراً من الطاقة.

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

يمكنك التحكم في معدل الإطارات، عند إستخدام ()invalidate في نهاية دالة ()draw الخاصة بك، عن طريق إضافة تأخير..

قبل إستدعاء الدالة ()invalidate . تعرف على كيفية تنفيذ هذه الخطوة في رسم أوجه الساعة.

 

 

 

دع وحدة المعالجة المركزية (CPU) تغفو بين الحركات

الرسوم المتحركة والتغييرات الطفيفة، في محتويات وجه الساعة، تقوم بإيقاظ وحدة المعالجة المركزية.

يجب أن يترك وجه الساعة وحدة المعالجة المركزية (CPU) تصبح ساكنه “تغفو” بين الحركات.

على سبيل المثال، يمكنك إستخدام دفعات قصيرة من الرسوم المتحركة، كل ثانية في الوضع التفاعلي، ثم ترك وحدة المعالجة المركزية تغفو حتى الثانية التالية.

ترك وحدة المعالجة المركزية (CPU) تغفو في كثير من الأحيان، لفترة وجيزة، قد يؤدي إلى تقليل إستهلاك الطاقة بشكلٍ كبير.

لزيادة عمر البطارية، إستخدم الرسوم المتحركة بزهد. حتى أن النقاط الوامضه تؤدي إلى إيقاظ وحدة المعالجة المركزية (CPU)..

مع كل وميض، و تسبب ضرراً لعمر البطارية.

 

 

 

 

 

تقليل حجم أصول الصور النقطية الخاصة بك


تتكون العديد من أوجه الساعه، من صورة خلفية، وأصول رسومية أخرى، يتم تحويلها وتراكبها على صورة الخلفية..

مثل عقارب الساعة وعناصر أخرى، من التصميم التي تتحرك بمرور الوقت. عادةً، يتم تدوير هذه العناصر الرسومية (وأحياناً تحجيمها)..

بداخل دالة ()Engine.onDraw في كل مرة يقوم فيها النظام، بإعادة رسم وجه الساعة، كما هو موضح في رسم وجه الساعة.

وكلما كبر حجم هذه الأصول الرسوميه، كلما كان تحويلها أكبر تكلفة، من الناحية الحسابية.

تحويل أصول الرسومات الكبيرة في دالة ()Engine.onDraw يقلل بشكلٍ كبير من معدل الإطار الذي يمكن للنظام به، تشغيل صورك المتحركة.

 

لتحسين أداء وجه الساعة:

– لا تستخدم عناصر رسومات أكبر مما تحتاج.
– قم بإزالة البكسلات الشفافة الإضافية حول الحواف.

المثال على عقرب الساعه، في الصورة الموجودة بالجانب الأيسر من الشكل 1 يمكن تقليل حجمها بنسبة 97%

  شكل 1. يمكن إقتصاص عقارب الساعة لإزالة البكسلات الزائدة.

لا يؤدي تقليل حجم الأصول للصور النقطية، كما هو موضح في هذا القسم، إلى تحسين أداء الرسوم المتحركة فحسب، بل يحفظ الطاقة أيضاً.

 

 

 

 

 

 

الجمع بين أصول الصور النقطية


إذا كانت لديك صور نقطية يتم جمعها معاً غالباً، ففكر في دمجها في الأصل الرسومي نفسه. يمكنك غالباً…

دمج صورة الخلفية في الوضع التفاعلي، مع علامات “الدق” لتجنب رسم صورتين نقطيتين، تملآن الشاشة في كل مرة، يقوم فيها النظام بإعادة رسم وجه الساعة.

 

 

 

 

 

تعطيل الصقل عند رسم الصور النقطية المعاد تحجيمها


عند رسم صورة نقطية معاد تحجيمها على كائن “اللوحه” Canvas بإستخدام الدالة “رسم صورة نقطيه على اللوحه” ()Canvas.drawBitmap ..

يمكنك توفير مثيل الرسم Paint لتهيئة العديد من الخيارات. لتحسين الأداء، قم بتعطيل “الصقل” anti-aliasing ..

بإستخدام الداله ()setAntiAlias، لأن هذا الخيار ليس له أي تأثير على الصور النقطية.

 

 

 

 

 

 

إستخدام تصفية الصور النقطية

بالنسبة إلى أصول الصور النقطية التي تقوم برسمها فوق العناصر الأخرى..

قم بتمكين تصفية الصور النقطية على نفس مثيل الرسم بإستخدام دالة ()setFilterBitmap . يعرض الشكل 2 معاينة مكبرة لعقرب ساعة مع وبدون تصفية الصور النقطية.

 

الشكل 2. مثال على تعطيل تصفية الصورة النقطية (يسار) و التمكين (يمين).

 

 

ملاحظة: في الوضع المحيطي منخفض البت، لا يقوم النظام بعرض الألوان في الصورة لتصفية الصور النقطية بشكلٍ صحيح.

عندما يكون الوضع المحيطي نشطاً، قم بتعطيل تصفية الصور النقطية.

 

 

 

 

نقل العمليات المكلفة خارج دالة الرسم


يقوم النظام بإستدعاء دالة ()Engine.onDraw في كل مرة يعيد فيها رسم وجه الساعة، لذلك يجب عليك فقط..

تضمين العمليات المطلوبة تماماً، لتحديث وجه الساعة بداخل هذه الداله لتحسين الأداء.

عند الإمكان، تجنب تنفيذ هذه العمليات بداخل دالة ()Engine.onDraw :

– تحميل الصور و المصادر الأخرى. تحسين وجه الساعه
– تغيير حجم الصور. تحسين وجه الساعه
– تخصيص الكائنات.
– أداء العمليات الحسابية التي لا تتغير نتائجها بين الإطارات.

بدلاً من ذلك، يمكنك عادةً إجراء هذه العمليات، في دالة ()Engine.onCreate . يمكنك تغيير حجم الصور مسبقاً..

في دالة ()Engine.onSurfaceChanged ، والتي توفر لك حجم اللوحة.

لتحليل أداء وجه الساعة، إستخدم محلل وحدة المعالجة المركزيه CPU. بشكلٍ خاص، تأكد من أن وقت التنفيذ..

الخاص بالتنفيذ ()Engine.onDraw قصير ومتناسق عبر الإستظهار. لمزيد من المعلومات، راجع تسجيل وفحص تتبع الدوال.

 


للإطلاع على المقال باللغة الإنجليزية أضغط هنا.

الإعلانات