تحسين الوصول إلى الشبكة

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

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

جهاز حالة الراديو

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

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

يتكوّن جهاز الحالة لشبكة الجيل الثالث اللاسلكية من ثلاث حالات طاقة:

  • الطاقة الكاملة: يتم استخدامها عندما يكون الاتصال نشطًا، ما يسمح للجهاز بنقل البيانات بأعلى معدّل ممكن.
  • الطاقة المنخفضة: حالة متوسطة تقلل من استهلاك طاقة البطارية بنسبة %50 تقريبًا.
  • وضع الاستعداد: هو الحد الأدنى من استهلاك الطاقة الذي لا يكون فيه أي اتصال بالشبكة نشطًا.

على الرغم من أنّ حالتَي الاستهلاك المنخفض والاستعداد تستهلكان قدرًا أقل بكثير من طاقة البطارية، إلا أنّهما تؤديان أيضًا إلى زيادة وقت الاستجابة لطلبات الشبكة بشكل كبير. وتستغرق العودة إلى الطاقة الكاملة من الحالة المنخفضة حوالي 1.5 ثانية، ويمكن أن يستغرق الانتقال من وضع الاستعداد إلى الطاقة الكاملة أكثر من ثانيتين.

ولتقليل وقت الاستجابة، تستخدم آلة الحالة تأخيرًا لتأجيل الانتقال إلى حالات الطاقة المنخفضة. يستخدم الشكل 1 توقيتات AT&T لشبكة لاسلكية نموذجية من الجيل الثالث.


الشكل 1: جهاز حالة الراديو اللاسلكي النموذجي من الجيل الثالث.

يختلف جهاز حالة الراديو على كل جهاز، لا سيما تأخير الانتقال المرتبط به ("وقت الذيل") ووقت استجابة بدء التشغيل، بناءً على تقنية الراديو اللاسلكي المستخدمة (شبكة الجيل الثالث وLTE وشبكة الجيل الخامس وما إلى ذلك) ويتم تحديدها وتهيئتها بواسطة شبكة مشغّل شبكة الجوّال التي يعمل عليها الجهاز.

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

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

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

كيف تؤثر التطبيقات في جهاز حالة الراديو

في كل مرة تنشئ فيها اتصالاً جديدًا بالشبكة، ينتقل الراديو إلى حالة الطاقة الكاملة. في حالة جهاز حالة الراديو النموذجي لشبكة الجيل الثالث الموصوف سابقًا، سيظل بكامل طاقته طوال مدة النقل، بالإضافة إلى 5 ثوانٍ إضافية من وقت الذيل، تليها 12 ثانية في حالة الطاقة المنخفضة. لذلك، بالنسبة إلى جهاز 3G عادي، ستؤدي كل جلسة نقل بيانات إلى استهلاك الطاقة من الراديو لمدة 18 ثانية على الأقل.

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


الشكل 2: استخدام طاقة الراديو اللاسلكي النسبي لعملية نقل مدتها ثانية واحدة يتم تشغيلها ثلاث مرات كل دقيقة. لا يشمل الرقم وقت الاستجابة "للتشغيل" بين عمليات التشغيل.

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


الشكل 3: استخدام طاقة الراديو اللاسلكي النسبي لعمليات النقل لمدة ثلاث ثوانٍ يتم تشغيلها مرة واحدة كل دقيقة.

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

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

عمليات نقل بيانات الحِزم

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

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

جلب البيانات مسبقًا

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

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

يوفّر الجلب المسبق أيضًا تجربة مستخدم محسّنة من خلال تقليل وقت الاستجابة داخل التطبيق الناتج عن انتظار اكتمال عمليات التنزيل قبل تنفيذ إجراء أو عرض البيانات.

إليك مثال عملي.

قارئ أخبار

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

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

والنهج الأفضل هو الجلب المُسبق لكمية معقولة من البيانات عند بدء التشغيل، بدءًا من المجموعة الأولى من عناوين الأخبار والصور المصغّرة، ما يضمن وقت بدء تشغيل بزمن انتقال منخفض، والمتابعة مع العناوين والصور المصغّرة المتبقية، بالإضافة إلى نص المقالة لكل مقالة متاحة من قائمة العناوين الرئيسية على الأقل.

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

اعتبارات أخرى

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

يعتمد مدى قوة الجلب المُسبق للبيانات على حجم البيانات التي يتم تنزيلها واحتمالية استخدامها. كدليل تقريبي، استنادًا إلى آلة الحالة الموضحة سابقًا، بالنسبة للبيانات التي لديها فرصة بنسبة 50% لاستخدامها في جلسة المستخدم الحالية، يمكنك عادةً الجلب المسبق لمدة 6 ثوانٍ تقريبًا (حوالي 1-2 ميغابايت) قبل أن تتطابق التكلفة المحتملة لتنزيل البيانات غير المستخدمة مع التوفير المحتمل لعدم تنزيل تلك البيانات، في البداية.

بشكل عام، من الممارسات الجيدة جلب البيانات مسبقًا بحيث تحتاج فقط إلى بدء عملية تنزيل أخرى كل دقيقتين إلى 5 دقائق، وبترتيب من 1 إلى 5 ميغابايت.

وفقًا لهذا المبدأ، يجب تنزيل الملفات الكبيرة، مثل ملفات الفيديو، على أجزاء على فترات منتظمة (كل دقيقتين إلى 5 دقائق)، ما يؤدي إلى جلب بيانات الفيديو التي من المرجّح أن يتم عرضها في الدقائق القليلة القادمة فقط.

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

التحقّق من إمكانية الاتصال قبل إرسال الطلبات

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

عمليات ربط المجمّعات

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

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

يتم تفعيل تجميع الاتصالات تلقائيًا في HttpURLConnection ومعظم عملاء HTTP، مثل OkHttp، وتتم إعادة استخدام الاتصال نفسه لطلبات متعددة.

ملخّص ونظرة إلى المستقبل

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

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