Bu sayfada, Android'in eşzamanlı olarak kullanılabilen ağlar arasında nasıl seçim yaptığı açıklanmaktadır. Bu ağ seçim mekanizması, Android'in uygulama ve sistem ağ isteklerini yerine getirme şeklini ve bir uygulamanın varsayılan ağının nasıl seçildiğini etkiler.
Ağ seçimi davranışı
Bu bölümde, çalışan cihazlar için ağ seçimi davranışı açıklanmaktadır Android 12 veya sonraki sürümler, Android çalıştıran cihazlar 11 ve önceki sürümler.
Android 12
Android 12 veya sonraki sürümleri çalıştıran cihazlarda Android, mevcut ağlar arasında seçim yapmak için NetworkScore
sınıfını kullanır. Bu sınıfta çok sayıda öğe var
politika kararları almak için gerekli işaretlerimdir. Her işaret anlamsal olarak bir
özelliğini kullanmanızı öneririz.
Ağ aracısı (NetworkAgent
), aynı aktarıcının birden fazla ağı olduğunda ağın tercih edildiğini belirtmek için POLICY_TRANSPORT_PRIMARY
işaretini kullanır. Buna örnek olarak, kullanıcının varsayılan olarak hangi SIM kartı kullanacağını seçmesine olanak tanıyan bir anahtar bulunan çift SIM kartlı cihazlar verilebilir. Belirli bir taşıma içinde Android, POLICY_TRANSPORT_PRIMARY
işareti olan bir ağı, işareti olmayan bir ağa tercih eder.
Ağ aracısı, yakında bağlantısının kesilmesi beklenen bir ağı tanımlamak için POLICY_EXITING
işaretini kullanır. Normal
Buna örnek olarak kullanıcı e-postadan çıktığında kablosuz ağ kalitesinin
daha iyi performans gösterir. Android, bu işareti taşımayan başka bir ağ varsa bu işareti taşıyan bir ağı kullanmaz. Her bir ağ aracısı şunları yapabilir:
bir ağın, çıkış olarak değerlendirilecek kadar azalmasını belirler.
NetworkScore
sınıfı, bir ağ aracısının ağ aracısı tarafından da beyan edilmesine izin verir.
projenin yolunda gitmesini
KEEP_CONNECTED_FOR_HANDOVER
ve
NetworkScore.Builder.setKeepConnectedReason
yöntemidir. Bu
KEEP_CONNECTED_FOR_HANDOVER
flag, potansiyel ağlar için bir ağ aracısının bir
ağ, ikincil kablosuz STA'da birincil ağ yapmaz.
ağının performansı değerlendirilir. Bir ağ aracısı bu işareti belirtmezse potansiyel ağlar, aracının bir ağın performansını değerlendirme fırsatı bulamadan herhangi bir isteği yerine getirmediği için kaldırılır.
İki ağ, belirli bir isteği yerine getirebiliyorsa ve bir politika noktasından eşdeğerse seçimi, o anda yalnızca aynı dili kullanan ağı isteği gönderin. İsteği yayınlayan bir ağ yoksa iki ağdan biri seçilir ve politika işaretleri değişene kadar bu ağ tercih edilmeye devam eder.
Ağ seçimi özelliğinin uygulanması
Bağlantı modülü
AOSP'de. Ağ seçimiyle ilgili politika mantığı, NetworkRanker
sınıfında ve yardımcı sınıflarında bulunur. Bu, cihaz üreticilerinin
ağ seçim kodunu doğrudan özelleştirmek yerine
NetworkScore
ağlarla ilgili gerekli bilgileri aktarmak için kullanılır.
Android 11
Android, Android 11 veya önceki sürümleri çalıştıran cihazlarda ağ seçimini gerçekleştirir
bir ağ aracısının uygulamalarından gönderilen basit bir tam sayıya dayanır
(NetworkAgent
).
Android, her istek için en yüksek sayısal puana sahip ağı seçer.
başka bir e-posta alırsınız. Bu sayısal puan, gönderilen tam sayı,
tarafından sağlanan ek bonuslar veya cezalar,
ağın doğrulanıp doğrulanmadığı veya
VPN ağıdır. Ağ aracıları, politika kararları almak için birbirleriyle senkronize olur.
İki ağ, belirli bir isteği yerine getirebiliyorsa ve aynı sayısal puana sahipse tanımlanmamıştır.
NetworkScore sınıfı
Ağ seçimi özelliğinin merkezi sınıfı NetworkScore
'dir.
Bu sınıf, mevcut işaretçilerin ve setKeepConnectedReason
yönteminin API'sini ve dokümanlarını içerir.
NetworkScore
sınıfı, oluşturucu sınıfı aracılığıyla oluşturulmalı ve ilklendirildikten sonra NetworkAgent
oluşturucuya iletilmelidir. Ağ puanları,
NetworkAgent#sendNetworkScore
yöntemidir.
Ağ aracısı uygulama örnekleri
AOSP, çeşitli ağ aracılarının örnek uygulamalarını içerir. Aşağıda örnek uygulamalar verilmiştir:
TelephonyNetworkAgent
: Mobil ağlara yönelik politikayı iletmek için ağ puanını kullanırClientModeImpl.WifiNetworkAgent
: Kablosuz ağlara yönelik politikayı iletmek için ağ puanını kullanır. Bu uygulanması,POLICY_EXITING
işaretini kullanarak ağ puanını kontrol edin.
Android 12'ye yükseltilen cihazlar
Cihazlarını Android 12'ye yükselten cihaz üreticileri, ağ aracısı uygulamalarını NetworkScore
sınıfını kullanacak şekilde değiştirmelidir. Şurada kullanılan eski tam sayı:
Android 11 veya önceki sürümler NetworkScore
uygulamasında iletilir ancak yalnızca kullanılır
günlük kaydı ve regresyon dışı kullanım için tasarlanmıştır.
Android 12'de cihaz üreticileri, NetworkScore
işaretlerini kullanarak istedikleri değişiklikleri belirtmelidir. Bağlantı ana hat modülü
ardından ağ seçimi kararını vermek için işaretleri kullanır. Android 11 veya önceki sürümlere yönelik kod kullanan ancak Android 12'deki uygulamaya göre derleme yapan cihaz üreticileri, eski tam sayıyı güncelleme yöntemleri Android 12'de kaldırıldığı için derleme hatalarıyla karşılaşabilir.
Dahili NetworkFactory
sınıfını kullanan ağ aracıları, puan filtrelerini fabrikanın oluşturabileceği bir ağın en güçlü puanını temsil eden bir NetworkScore
nesnesinde ifade etmelidir. Bunun nedeni, Android 12'de NetworkFactory
sınıfının Android 11 ve önceki sürümlerdeki tüm istekler yerine yalnızca NetworkFactory
için beyan edilen puan filtreleriyle eşleşen istekleri iletmesidir.
Daha kolay uygulama ve pil tasarrufu için tüm isteklerin NetworkFactory
'e iletilmemesi amacıyla bir filtre iletmenizi öneririz. Ancak özel uygulamanız tüm isteklerin NetworkFactory
adresine iletilmesini gerektiriyorsa normal NetworkFactory.register
yöntemi yerine NetworkFactory.registerIgnoringScore
yöntemini kaydedebilirsiniz. Bu yöntemi kullanıyorsanız fabrikanın yerine getiremediği istekleri değerlendirmeyerek pil tasarrufu sağlamak için fabrikanın oluşturabileceği en iyi puanı en doğru şekilde temsil eden bir puan filtresi iletmenizi öneririz.
Doğrulama
Android cihazda ağ seçiminin davranışını doğrulamak için aşağıdaki testleri destekler:
NetworkScoreTest
CTS testiNetworkRanker
birim testi
Yanlış uygulama, beklenmedik ağların
%30'luk bir artışa
NetworkCallback
,
cihazın varsayılan ağını (sistemin
ConnectivityManager.registerDefaultNetworkCallback
).
Yanlış uygulamayla ilgili olası bir diğer sorun da, ağ aracısının herhangi bir istek için uygun olmasını engelleyen bir puanla başlatılması ve hemen ardından kapatılması nedeniyle ciddi pil tüketimine neden olmasıdır. Temsilci: sürekli getirilip söküldüğünde çok fazla pil tüketebilir.