Location & Battery Drain (Android Performance Patterns Season 3 ep7)

Published by Darron Toy on



أحد الميزات الفريدة لتطبيقات الهاتف النقال
هي إدراك الموقع. يأخذ مستخدمو الهواتف النقالة أجهزتهم
إلى كل مكان وإضافة إدراك الموقع لتطبيقك
يوفر للمستخدمين تجربة أكثر جاذبية. اسمي كولت ماكانليس، وفيما تجعل بيانات الموقع الجذابة هذه
تطبيقك أكثر فائدة، ,إساءة استخدامها يمكن أن يكلفك كثيراً
فيما يتعلق بعمر البطارية. الآن، يبدو طلب الموقع القياسي
كشيء مثل هذا. وباسم الأداء، دعونا نلقي نظرة على أول قيمتين،
وهما API الفواصل الزمنية. يحدد SetInterval المعدل بالميلي ثانية الذي يفضل تطبيقك فيه تلقي تحديثات الموقع. كلما كان الرقم أقل،
كلما حصلت على المزيد من التحديثات، وبالطبع كلما استهلكت المزيد من البطارية
نتيجة لذلك، الأمر الذي يعني إيجاد القيمة الصحيحة
لاستخدامها كفاصل زمني هو توازن هام. إذا كان سريعاً جداً، ستستهلك
الكثير من البطارية لأجل طلبات GPS. إذا كانت بطيئة جداً فلن يتم تحديث تطبيقك
بالسرعة الكافية ليكون مفيداً للمستخدم. في نهاية المطاف تريد أن تصل إلى حالة بحيث يمكنك أن تكون أكثر ديناميكية
من حيث كيفية التفاعل مع هذا الجهاز. مثلاً، إذا لاحظت أن الموقع
قد بقي نفسه لفترة من الوقت، فهناك إحتمال كبير أن يكون المستخدم
ثابتاً لمدة طويلة. لذا حاول تخفيف الفاصل الزمني لأخذ العينات
بهدف تقليل مقدار استنزاف البطارية الناتجة من هذه العملية. لكن تجدر الإشارة أيضاً
إلى أن التطبيقات الأخرى تؤثر أيضاً على معدل التحديثات
المرسلة إلى تطبيقك. في الواقع، سيرسل النظام الأساسي التحديثات
بمعدل أسرع من أي تطبيق يطلب تحديثات مع الـ API
Setinterval عبر النظام بأكمله، ما يعني أنه في نهاية المطاف
يمكن أن يتلقى تطبيقك أحداث الموقع بتواتر أسرع من التواتر المطلوب من تطبيقك، ربما يغرقك بسيل من معلومات الموقع وتقوم بالكثير من الأشياء الأخرى
التي لا تحتاج القيام بها فعلاً. وهذا هو سبب استخدام الـ API
SetFastestInterval. في الأساس، يتيح هذا لك تقليل التواتر الذي تتلقى فيه التحديثات
التي قد لا تكون مهتماً بها أو جاهزاً لها. بحيث لا يضيع تطبيقك الوقت
في تحديث ومعالجة أحداث الموقع عندما لا يكون هناك حاجة إليها. الآن دعونا نلقي نظرة على setPriority. عليك أن تتذكر أن الطريقة السائدة
التي يحلل جهازك موقعه الفعلي على الأرض هي بمساعدة أجهزة النظام العالمي
لتحديد المواقع. في الأساس، هناك سلسلة من الأقمار الصناعية
تحلق عالياً خارج الغلاف الجوي للأرض والتي تتمحور وظيفتها
في توصيل المعلومات الموضعية إلى جهازك بناء على تحركاتك. ببساطة، إن جهاز GPS في هاتفك يتبادل الإشارات بين الأقمار الصناعية
وبرج البيانات لتحديد موضعك في المكان والزمان، والتي كما تتصور،
هي عملية مكثفة جداً على البطارية. ولكن هذه ليست الطريقة الوحيدة
التي يمكنك الحصول بها على بيانات الموقع. إضافة إلى نظام تحديد المواقع باهظ الثمن،
هناك أيضاً مزود الشبكة، الذي يحدد الموقع على أساس
توافر برج الخلوي ونقاط وصول الواي فاي. والنتيجة تزويدك بنتائج أقل دقة، لكنه يستخدم جزء من البطارية فقط
مقارنة مع نسخة GPS. وبطبيعة الحال، هناك مزود مجهول،
الذي هو على الارجح الأكثر فعالية للبطارية. عندما تقوم بعض التطبيقات الأخرى
بطلب الموقع، ستنتقل النتائج عبر تطبيقك أيضاً. بهذه الطريقة لا يقوم جهازك بإرسال
عدة استعلامات للموقع ويمكنه أن يوفر البطارية لوقت أطول. الآن، من أجل جعل كل هذا
في متناول احتياجات API الموقع، يمكنك التحكم بأنواع الشبكات
وإستهلاك البطارية الذي تريده باستخدام خيار setPriority لطلب الموقع. وإذا كنت تستخدم بالفعل معرّف نشاط لتحديد ما هو الجهاز أو التطبيق
الذي يقوم به أو متى لا يتم استخدامه، يمكنك الاستفادة من هذه البيانات
لإيقاف طلب استفسار الموقع أو يمكنك تقليلها
عندما لا يكون هناك حاجة إليها. لكن في الحقيقة، يعتمد التوازن والكسب
لكل تلك الـ API على الحالة إن العملية في الحقيقة مُرهقة، وهو سبب أن أندرويد قد جعلها أسهل بكثير. من خلال استخدام الـ API
FusedLocationProvider، حيث تحصل على واجهة مبسطة لكل هذا الجنون، وسيتعامل أندرويد مع كل التفاصيل
المؤثرة الفوضوية نيابة عنك، مما يوفر لك كل من البطارية
وكذلك التعقل في أساس الكود. الآن، إذا كنت محتاراً
بشأن الكيفية التي يستهلك فيها للبطارية، تأكد دائما أن نلقي نظرة فاحصة
على أداة مؤرخ البطارية. وستذكرك بسرور بكل الأشياء التي تقوم بها
بشكل خاطئ وتعطيك تلميحات حول كيفية إصلاحها. حتى لا تضيع في عالم أداء البطارية. تحقق من بقية مقاطع فديو أنماط أداء أندرويد وانضم إلى منتدانا على +Google
لتطرح الأسئلة على خبراء رائعين في الأداء. لذلك ابق هادئاً، اكتب كودك،
وتذكر دائماً، الأداء مهم.


4 Comments

Sterling Roseberry · May 15, 2019 at 2:01 pm

so on stock Android, which option is the best to use to get good battery life while leaving location on? thanks!

playyboy nyc · May 15, 2019 at 2:01 pm

yo what the FUCK are you talking about dude?

Karthick CK · May 15, 2019 at 2:01 pm

Nice way to keep the battery life better, but Priority Balanced power does not give location updates,it remains the same location value.

LION · May 15, 2019 at 2:01 pm

Totally agree on the battery drain.

Leave a Reply

Your email address will not be published. Required fields are marked *