سؤال

هل هناك "أفضل الممارسات" لكتابة كفاءة في القوة معرفتي التطبيق في سيمبيان؟

على وجه التحديد ، هل هناك أي طريقة (أي API) لتطبيق Symbian لتلميح نظام التشغيل فيما يتعلق بحالته الحالية من أجل تقليل استهلاك البطارية؟ في Android ، على سبيل المثال ، هناك فكرة أقفال الاستيقاظ, ، الذي يمنع الجهاز من الانتقال إلى وضع الاستعداد - هل هناك أي شيء مشابه في Symbian؟

تعديل:
هل هناك أي آثار عند تشغيل رمز كرسائل منفصلة مع مكتبة Open-C ، وليس كـ Symbian C ++ "الأصلي" ، باستخدام كائنات نشطة وما إلى ذلك؟ (رمز Open-C يمنع IO معظم الوقت).

هل كانت مفيدة؟

المحلول

  1. يمكنك التحقق من نشاط المستخدم (في) باستخدام طريقة RTIMER :: Inactivity (). هذه الطريقة موصوفة في منتدى صفحة نوكيا ويكي. هناك أيضًا وصف كيف يمكنك إعادة تعيين مؤقت عدم وجود.
  2. يمكنك التحقق مما إذا كان يتم تشغيل شاشة الجهاز أو إيقاف تشغيله باستخدام API HAL. انظر الفصول هال وهالداتا. يمكنك استخدام مثل هذه المكالمة:

TInt displayState; HAL::Get(HALData::EDisplayState, displayState);وسيتمسك DisplayState إما 0 إذا تم إيقاف العرض أو 1 في حالة أخرى.

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

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

أتمنى أن يساعدك هذا.

تعديل: حول خيط منفصل وفتح C. على حد علمي ، فإن Open C هو مجرد مكون إضافي ، ولا تزال جميع التطبيقات "Symbian الأصلية". لذلك ، بقدر ما تتجنب الاقتراع الدوري لبعض الموارد واستخدام فقط الحظر المعتاد IO ، فإن الكود الخاص بك هو نفس الاقتصاد على قوة تقنيات الكائنات النشطة القياسية Symbian (التي تستخدم Symbian Semaphores الخاصة بحظر المواضيع).

نصائح أخرى

لم أصادف أي شيء مميز في Symbain لإبعاد الجهاز عن وضع الاستعداد. في الأساس ، ستكون "أفضل الممارسات" هي نفسها مثل جميع الأجهزة المحمولة:

  • لا تحلق في انتظار الأشياء ، واستخدم دائمًا أي خدمات إشارات Avaialble على النظام الأساسي ، لـ Symbain ActiveObjects / user :: waitforxxx
  • الحد من عدد مؤشرات ترابط الخلفية (حاليًا لا تزال جميع الأجهزة المحمولة وحدة المعالجة المركزية واحدة فقط ...)
  • لا تتمسك بخدمات النظام ، وأغلقها في أسرع وقت ممكن (هذا عادةً ما يكون استنزاف البطارية الرئيسي في تطبيقات المحمول الخاصة بي ، وأحيانًا تحاول العثور على خدمة النظام التي تسبب معظم استنزاف البطارية يمكن أن يكون ألمًا حقيقيًا ، وينمو سيئ للغاية لهذا الغرض).

بالنسبة لي ، أجد أنه في الغالب يعود إلى مفاضلة بين عمر البطارية والأداء / الاستجابة للتطبيق. لسوء الحظ ، يبدو أن القوة التي تكون دائمًا ما تكون جانبية مع جانب الأداء / الاستجابة ولعن استنزاف البطارية .....

امنح التطبيق الخاص بك أولوية منخفضة (انظر RPROCESS و RTHREAD الفصول). يعتمد نهجك حقًا على ما يفعله تطبيق الخلفية. هذه الأشياء تستهلك معظم البطارية: الراديو (GSM/3G/WIFI/Bluetooth) ، الإضاءة الخلفية على الشاشة ، وصول الملف.

سيحاول Symbian OS دائمًا تقديم طلبك للنوم ، ولا تحتاج إلى إخباره بذلك. فقط تأكد من أن نهجك يمنحه الفرصة لوضعه في النوم.

تعد إدارة الطاقة قضية أكثر أهمية أثناء تطوير التطبيق.

في Symbian يعتمد ذلك على ما تستخدمه لتشغيل أنشطة الخلفية.

سواء كنت تستخدم Thread أو ActiveX Control.

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

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

في الواقع هذا هو الموضوع الجيد جدا الذي صادفته

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

إذا كنت تستخدم الوظيفة غير المتزامنة المختلفة في Symbian ، فسيتم تشغيل تطبيقك عند الاقتضاء.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top