اختيار الشبكة

تصف هذه الصفحة كيفية قيام Android بالاختيار بين الشبكات المتاحة بشكل متزامن. تؤثر آلية اختيار الشبكة هذه على كيفية تلبية Android لطلبات شبكة التطبيق والنظام ، وتؤثر على كيفية اختيار الشبكة الافتراضية للتطبيق.

سلوك اختيار الشبكة

يصف هذا القسم سلوك اختيار الشبكة للأجهزة التي تعمل بنظام Android 12 أو أعلى وللأجهزة التي تعمل بنظام Android 11 والإصدارات الأقدم.

أندرويد 12

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

وقال وكيل الشبكة ( NetworkAgent ) يستخدم POLICY_TRANSPORT_PRIMARY العلم لتحديد أن الشبكة ويفضل عندما شبكات متعددة للنقل نفس موجودة. مثال نموذجي على ذلك هو جهاز ثنائي الشريحة مع مفتاح في الإعدادات للسماح للمستخدم باختيار بطاقات SIM التي سيستخدمها افتراضيًا. ضمن النقل معين، الروبوت تفضل شبكة مع POLICY_TRANSPORT_PRIMARY العلم على الشبكة دون العلم.

يستخدم عامل شبكة POLICY_EXITING العلم لتحديد الشبكة التي من المتوقع أن قطع قريبا. مثال نموذجي على ذلك هو عندما تتدهور جودة شبكة Wi-Fi عندما يخرج المستخدم من نطاق الشبكة. يتجنب Android استخدام شبكة بهذه العلامة في حالة توفر شبكة أخرى بدون هذه العلامة. يمكن لكل وكيل شبكة فردي تحديد متى تتدهور الشبكة بدرجة كافية ليتم اعتبارها في حالة خروج.

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

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

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

أندرويد 11

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

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

فئة NetworkScore

الطبقة الوسطى لميزة اختيار الشبكة NetworkScore . تحتوي هذه الفئة API وثائق الأعلام المتاحة و setKeepConnectedReason الأسلوب.

و NetworkScore يجب بناء الطبقة من خلال الطبقة بانيها وتمريرها إلى NetworkAgent منشئ على التهيئة. يمكن تحديث عشرات الشبكة في أي وقت باستخدام NetworkAgent#sendNetworkScore الأسلوب.

أمثلة على تنفيذ وكيل الشبكة

يتضمن AOSP أمثلة على تطبيقات وكلاء الشبكة المختلفين. فيما يلي أمثلة على عمليات التنفيذ:

  • DcNetworkAgent : يستخدم النتيجة شبكة للتواصل سياسة لشبكات المحمول
  • ClientModeImpl.WifiNetworkAgent : يستخدم النتيجة شبكة للتواصل سياسة لشبكات واي فاي. ويشمل هذا تنفيذ التوافق مع عدد صحيح إرث لدرجة الشبكة باستخدام POLICY_EXITING العلم.

ترقية الأجهزة إلى Android 12

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

عن وكلاء الشبكة التي تستخدم الداخلية NetworkFactory الدرجة، يجب أن تعبر عن مرشح تقدمهم في NetworkScore الكائن الذي يمثل أقوى درجة من شبكة المصنع يمكن أن تخلق. هذا هو لأنه في الروبوت (12) و NetworkFactory الطبقة يمر فقط الطلبات التي تتطابق مع مرشحات النتيجة المعلنة NetworkFactory بدلا من جميع الطلبات في الروبوت 11 وخفض.

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

تصديق

للتحقق من سلوك اختيار الشبكة على جهاز Android ، استخدم الاختبارات التالية:

تنفيذ غير صحيحة قد يؤدي إلى شبكات غير متوقعة يتم إرجاعها إلى تطبيقات ردا على استخدامهم لل NetworkCallback ، بما في ذلك اختيار الشبكة الافتراضية للجهاز (على شبكة النظام يرسل إلى التطبيق عند استخدامهم رد الشبكة مع ConnectivityManager.registerDefaultNetworkCallback ).

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