Ağ durumunu oku

Android, uygulamaların bağlantıdaki dinamik değişiklikleri öğrenmesini sağlar. Bağlantı değişikliklerini takip etmek ve bunlara yanıt vermek için aşağıdaki sınıfları kullanın:

  • ConnectivityManager uygulamanıza sistemdeki bağlantı durumunu bildirir.
  • Network sınıfı, cihazın bağlı olduğu ağlardan birini temsil eder. ConnectivityManager ile ağ hakkında bilgi toplamak veya ağdaki yuvaları bağlamak için Network nesnesini anahtar olarak kullanabilirsiniz. Ağ bağlantısı kesildiğinde Network nesnesi artık kullanılamaz. Cihaz daha sonra aynı cihaza yeniden bağlansa bile yeni bir Network nesnesi yeni ağı temsil eder.
  • LinkProperties nesnesi bir ağın bağlantısıyla ilgili DNS sunucuları, yerel IP adresleri ve ağ için yüklü ağ yolları listesi gibi bilgileri içerir.
  • NetworkCapabilities nesnesi, ağın aktarımlar (kablosuz, mobil, Bluetooth) ve ağın neler yapabildiği gibi özellikleri hakkında bilgiler içerir. Örneğin, ağın MMS gönderip göndermediğini, doğrulama amacıyla yönlendirme yapan bir portalın arkasında olup olmadığını veya sayaçlı olup olmadığını belirlemek için nesneyi sorgulayabilirsiniz.

Bağlantının herhangi bir zamanda anlık durumuyla ilgilenen uygulamalar, kullanılabilir ağın türünü öğrenmek için ConnectivityManager yöntemlerini çağırabilir. Bu yöntemler, hata ayıklamada ve zaman zaman herhangi bir zamanda kullanılabilir olan bağlantının anlık görüntüsünü incelemede faydalıdır.

Ancak eşzamanlı ConnectivityManager yöntemleri, uygulamanıza bir aramadan sonra olanları bildirmez. Bu nedenle, kullanıcı arayüzünüzü güncellemenize izin vermez. Ayrıca, ağın bağlantısının kesilmesine veya ağ özellikleri değiştiğinden uygulama davranışını değiştiremezler.

Bağlantı her an değişebilir ve çoğu uygulamanın cihazdaki ağ durumunun her zaman yeni ve güncel bir görünümü olması gerekir. Uygulamalar, önem verdiği değişiklikler konusunda uyarı almak için ConnectivityManager ile geri arama kaydı yapabilir. Geri çağırma işlevini kullanarak uygulamanız, hızlı güncellemeleri kaçıran pahalı anketlere başvurmak zorunda kalmadan bağlantıdaki ilgili tüm değişikliklere anında tepki verebilir.

NetworkCallback özelliğini ve cihazın bağlantı durumunu öğrenmenin diğer yollarını kullanmak için özel bir izin gerekmez. Ancak bazı ağlar belirli izinlere tabidir. Örneğin, uygulamalar tarafından kullanılamayan kısıtlanmış ağlar olabilir. Arka plan ağına bağlanmak için CHANGE_NETWORK_STATE izni gerekir. Bazı aramaların çalışabilmesi için belirli izinler de gerekebilir. Ayrıntılar için her çağrıyla ilgili söz konusu belgeleri inceleyin.

Anlık durum alma

Android destekli bir cihaz aynı anda birçok bağlantıyı sürdürebilir. Mevcut ağ durumu hakkında bilgi almak için önce ConnectivityManager örneği alın:

Kotlin

val connectivityManager = getSystemService(ConnectivityManager::class.java)

Java

ConnectivityManager connectivityManager = getSystemService(ConnectivityManager.class);

Daha sonra, uygulamanızın geçerli varsayılan ağına referans almak için şu örneği kullanın:

Kotlin

val currentNetwork = connectivityManager.getActiveNetwork()

Java

Network currentNetwork = connectivityManager.getActiveNetwork();

Uygulamanız bir ağa referans vererek o ağ hakkında bilgi isteyebilir:

Kotlin

val caps = connectivityManager.getNetworkCapabilities(currentNetwork)
val linkProperties = connectivityManager.getLinkProperties(currentNetwork)

Java

NetworkCapabilities caps = connectivityManager.getNetworkCapabilities(currentNetwork);
LinkProperties linkProperties = connectivityManager.getLinkProperties(currentNetwork);

Daha faydalı işlevler için bir NetworkCallback kaydettirin. Ağ geri çağırmalarını kaydetme hakkında daha fazla bilgi için Ağ etkinliklerini dinleme bölümüne bakın.

NetworkCapabilities ve Bağlantı Özellikleri

NetworkCapabilities ve LinkProperties nesneleri, sistemin bir ağ hakkında bildiği tüm özellikler hakkında bilgi sağlar.

LinkProperties nesnesi rotaları, bağlantı adreslerini, arayüz adını, proxy bilgilerini (varsa) ve DNS sunucularını bilir. İhtiyacınız olan bilgileri almak için LinkProperties nesnesinde ilgili yöntemi çağırın.

NetworkCapabilities nesnesi, ağ aktarımları ve yetenekleri ile ilgili bilgileri içerir.

Taşıma, bir ağın üzerinde işlem yaptığı fiziksel bir ortamın soyutlanmasıdır. Yaygın taşıma örnekleri arasında Ethernet, kablosuz ve mobil cihazlar yer alır. VPN'ler ve Eşler Arası Kablosuz ağlar da aktarım olarak kullanılabilir. Android'de, bir ağda aynı anda birden fazla aktarma olabilir. Buna örnek olarak hem kablosuz hem de mobil ağlarda çalışan bir VPN verilebilir. VPN; kablosuz, mobil ve VPN aktarımlarına sahiptir. Bir ağın belirli bir aktarımının olup olmadığını öğrenmek için NetworkCapabilities.TRANSPORT_* sabit değerlerinden biriyle NetworkCapabilities.hasTransport(int) yöntemini kullanın.

Yetenek, ağın bir özelliğini tanımlar. Örnek özellikler arasında MMS, NOT_METERED ve INTERNET bulunur. MMS özelliğine sahip bir ağ, Multimedya Mesajlaşma Hizmeti mesajlarını gönderip alabilir. Bu özelliğe sahip olmayan bir ağ ise bunu yapamaz. NOT_METERED özelliğine sahip bir ağ, kullanıcıyı veriler için faturalandırmaz. Uygulamanız, NetworkCapabilities.NET_CAPABILITY_* sabit değerlerinden biriyle NetworkCapabilities.hasCapability(int) yöntemini kullanarak uygun özellikleri kontrol edebilir.

En kullanışlı NET_CAPABILITY_* sabitleri şunlardır:

  • NET_CAPABILITY_INTERNET: ağın, internete erişecek şekilde ayarlandığını gösterir. Bu, kurulum ile ilgilidir, genel sunuculara erişmenin gerçek yeterliliğiyle ilgili değildir. Örneğin, bir ağ internete erişecek şekilde ayarlanabilir, ancak doğrulama amacıyla yönlendirme yapan bir portala tabi olabilir.

    Operatörün mobil ağı genellikle INTERNET özelliğine sahiptir ancak yerel P2P kablosuz ağı genellikle bu özelliğe sahip değildir. Gerçek bağlantı için NET_CAPABILITY_VALIDATED adresini inceleyin.

  • NET_CAPABILITY_NOT_METERED: Ağın ölçülü olmadığını gösterir. Parasal maliyetler, veri sınırlamaları veya pil performansı sorunları nedeniyle kullanıcı bir bağlantıda yoğun veri kullanımına karşı hassas olan durumlarda ağ sayaçlı olarak sınıflandırılır.

  • NET_CAPABILITY_NOT_VPN: ağın bir sanal özel ağ olmadığını belirtir.

  • NET_CAPABILITY_VALIDATED: Ağın, kontrol edildiğinde herkese açık internete gerçek erişim sağladığını gösterir. Doğrulama amacıyla yönlendirme yapan bir portal'ın arkasındaki ağlar veya alan adı çözümlemesi sağlamayan ağlar bu özelliğe sahip değildir. Bu, sistemin erişim sağlayan bir ağ hakkında söyleyebileceği en yakın değerdir. Ancak doğrulanmış bir ağ yine de prensip olarak IP tabanlı filtrelemeye tabi olabilir veya zayıf sinyal gibi sorunlar nedeniyle ani bağlantı kayıpları yaşayabilir.

  • NET_CAPABILITY_CAPTIVE_PORTAL: Ağın kontrol edildiklerinde doğrulama amacıyla yönlendirme yapan bir portala sahip olduğunu gösterir.

Daha özel uygulamaların ilgilenebileceği başka özellikler de vardır. Daha fazla bilgi için NetworkCapabilities.hasCapability(int) bölümündeki parametre tanımlarını okuyun.

Bir ağın özellikleri herhangi bir zamanda değişebilir. Sistem, doğrulama amacıyla yönlendirme yapan bir portal algıladığında kullanıcıyı giriş yapmaya davet eden bir bildirim gösterir. Bu işlem devam ederken, ağda NET_CAPABILITY_INTERNET ve NET_CAPABILITY_CAPTIVE_PORTAL özellikleri vardır ancak NET_CAPABILITY_VALIDATED özelliği yoktur.

Kullanıcı işlem yapıp giriş portalı sayfasına giriş yaptığında, cihaz herkese açık internete erişebilir hale gelir ve ağ, NET_CAPABILITY_VALIDATED özelliğini kazanır ve NET_CAPABILITY_CAPTIVE_PORTAL özelliğini kaybeder.

Benzer bir şekilde, bir ağın aktarımları dinamik olarak değişebilir. Örneğin, bir VPN, temeldeki ağ için mobilden kablosuz ağa geçmek gibi yeni ortaya çıkan daha hızlı bir ağı kullanacak şekilde kendisini yeniden yapılandırabilir. Bu durumda ağ, TRANSPORT_VPN aktarımını korurken TRANSPORT_CELLULAR aktarımını kaybeder ve TRANSPORT_WIFI aktarımını kazanır.

Ağ etkinliklerini dinleme

Ağ etkinlikleri hakkında bilgi edinmek için NetworkCallback sınıfını ConnectivityManager.registerDefaultNetworkCallback(NetworkCallback) ve ConnectivityManager.registerNetworkCallback(NetworkCallback) ile birlikte kullanın. Bu iki yöntem farklı amaçlara hizmet eder.

Tüm Android uygulamalarının, sistem tarafından belirlenen varsayılan bir ağı vardır. Sistem genellikle sayaçsız ağları sayaçlı ağlara, hızlı ağları ise yavaş ağlara tercih eder.

Bir uygulama, HttpsURLConnection gibi bir ağ isteği yayınladığında sistem bu isteği varsayılan ağı kullanarak karşılar. Uygulamalar diğer ağlarda da trafik gönderebilir. Daha fazla bilgi için ek ağlar ile ilgili bölüme bakın.

Varsayılan ağ olarak ayarlanan ağ, uygulamanın ömrü boyunca herhangi bir zamanda değişebilir. Bunun tipik bir örneği, cihazın bilinen, etkin, ölçüm yapılmayan ve mobilden daha hızlı bir kablosuz erişim noktası kapsama alanında bulunmasıdır. Cihaz bu erişim noktasına bağlanır ve tüm uygulamalar için varsayılan ağı yeni kablosuz ağa geçirir.

Yeni bir ağ varsayılan hale geldiğinde, uygulamanın açtığı her yeni bağlantı bu ağı kullanır. Daha sonra, önceki varsayılan ağda kalan tüm bağlantılar zorla sonlandırılır. Uygulamanın varsayılan ağ değiştiğinde bunu bilmesi önemliyse aşağıdaki şekilde varsayılan bir ağ geri çağırması kaydeder:

Kotlin

connectivityManager.registerDefaultNetworkCallback(object : ConnectivityManager.NetworkCallback() {
    override fun onAvailable(network : Network) {
        Log.e(TAG, "The default network is now: " + network)
    }

    override fun onLost(network : Network) {
        Log.e(TAG, "The application no longer has a default network. The last default network was " + network)
    }

    override fun onCapabilitiesChanged(network : Network, networkCapabilities : NetworkCapabilities) {
        Log.e(TAG, "The default network changed capabilities: " + networkCapabilities)
    }

    override fun onLinkPropertiesChanged(network : Network, linkProperties : LinkProperties) {
        Log.e(TAG, "The default network changed link properties: " + linkProperties)
    }
})

Java

connectivityManager.registerDefaultNetworkCallback(new ConnectivityManager.NetworkCallback() {
    @Override
    public void onAvailable(Network network) {
        Log.e(TAG, "The default network is now: " + network);
    }

    @Override
    public void onLost(Network network) {
        Log.e(TAG, "The application no longer has a default network. The last default network was " + network);
    }

    @Override
    public void onCapabilitiesChanged(Network network, NetworkCapabilities networkCapabilities) {
        Log.e(TAG, "The default network changed capabilities: " + networkCapabilities);
    }

    @Override
    public void onLinkPropertiesChanged(Network network, LinkProperties linkProperties) {
        Log.e(TAG, "The default network changed link properties: " + linkProperties);
    }
});

Yeni bir ağ varsayılan hale geldiğinde, uygulama yeni ağ için onAvailable(Network) çağrısı alır. Bağlantıdaki değişikliklere uygun şekilde tepki vermek için onCapabilitiesChanged(Network,NetworkCapabilities), onLinkPropertiesChanged(Network,LinkProperties) veya ikisini birden uygulayın.

registerDefaultNetworkCallback() ile kaydedilen bir geri arama işlemi için onLost(), ağın varsayılan ağ durumunu kaybettiği anlamına gelir. Bağlantı kesilmiş olabilir.

NetworkCapabilities.hasTransport(int) sorgusunu sorgulayarak varsayılan ağın kullandığı aktarımlar hakkında bilgi edinebilirsiniz ancak bu, ağın bant genişliği veya sayaçlılığı için zayıf bir proxy'dir. Uygulamanız, kablosuz ağın her zaman sınırsız olduğunu varsayamaz ve her zaman mobil cihazlara göre daha iyi bant genişliği sağlar.

Bunun yerine, bant genişliğini ölçmek için NetworkCapabilities.getLinkDownstreamBandwidthKbps() ve sayaçlılığı belirlemek için NET_CAPABILITY_NOT_METERED bağımsız değişkenleriyle NetworkCapabilites.hasCapability(int) özelliğini kullanın. Daha fazla bilgi için NetworkCapabilities ve LinkProperties bölümüne bakın.

Geri çağırma yöntemleri, varsayılan olarak uygulamanızın bağlantı iş parçacığında çağrılır. Bu iş parçacığı ConnectivityManager tarafından kullanılan ayrı bir iş parçacığıdır. Geri çağırmaları uygulamanızın artık çalışması gerekiyorsa ConnectivityManager.registerDefaultNetworkCallback(NetworkCallback, Handler) varyantını kullanarak bunları ayrı bir çalışan iş parçacığında çağırın.

Artık kullanmadığınızda ConnectivityManager.unregisterNetworkCallback(NetworkCallback) numaralı telefonu arayarak geri arama kaydınızı iptal edin. Ana etkinliğinizin onPause() öğesi, özellikle de geri çağırmayı onResume() üzerinden kaydettiyseniz bunu yapmak için iyi bir yerdir.

Ek ağlar

Varsayılan ağ, çoğu uygulama için tek ilgili ağ olsa da, bazı uygulamalar mevcut diğer ağlarla ilgilenebilir. Uygulamalar, bu konular hakkında bilgi edinmek için ihtiyaçlarına uygun bir NetworkRequest geliştirip ConnectivityManager.registerNetworkCallback(NetworkRequest, NetworkCallback) numaralı telefonu arar.

Bu işlem, varsayılan bir ağı dinlemeye benzer. Bununla birlikte, bir uygulama için herhangi bir zamanda yalnızca tek bir varsayılan ağ geçerli olsa da, bu sürüm, uygulamanızın tüm kullanılabilir ağları aynı anda görmesini sağlar. Bu nedenle, onLost(Network) çağrısı ağın kalıcı olarak koptuğu anlamına gelir, artık varsayılan ağ olmadığı anlamına gelmez.

Uygulama, ConnectivityManager adlı kullanıcıya ne tür ağları dinlemek istediği konusunda bilgi vermek için bir NetworkRequest oluşturur. Aşağıdaki örnekte, yalnızca sınırsız internet bağlantılarıyla ilgilenen bir uygulama için nasıl NetworkRequest oluşturulacağı gösterilmektedir:

Kotlin

val request = NetworkRequest.Builder()
  .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)
  .addCapability(NET_CAPABILITY_INTERNET)
  .build()

connectivityManager.registerNetworkCallback(request, myNetworkCallback)

Java

NetworkRequest request = new NetworkRequest.Builder()
  .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)
  .addCapability(NET_CAPABILITY_INTERNET)
  .build();

connectivityManager.registerNetworkCallback(request, myNetworkCallback);

Bu, uygulamanızın sistemdeki sınırsız bir ağ ile ilgili tüm değişiklikleri öğrendiği anlamına gelir.

Varsayılan ağ geri çağırma özelliğine gelince, Handler kabul eden bir registerNetworkCallback(NetworkRequest, NetworkCallback, Handler) sürümü vardır. Bu sürüm, uygulamanızın Connectivity iş parçacığını yüklemez.

Geri arama artık alakalı olmadığında ConnectivityManager.unregisterNetworkCallback(NetworkCallback) numaralı telefonu arayın. Bir uygulama eşzamanlı olarak birden fazla ağ geri çağırması kaydedebilir.

Kolaylık sağlaması açısından NetworkRequest nesnesi, aşağıdakiler de dahil olmak üzere çoğu uygulamanın ihtiyaç duyduğu ortak özellikleri içerir:

Uygulamanızı yazarken, kullanım alanınızla eşleşip eşleşmediğini görmek için varsayılanları kontrol edin. Bu özelliklere sahip olmayan ağlar hakkında uygulamanızın bilgilendirilmesini istiyorsanız bu özellikleri kaldırın. Diğer yandan, uygulamanızın etkileşim kurmadığı ağlardaki herhangi bir bağlantı değişikliği nedeniyle çağrılmaması için gereken özellikler ekleyin.

Örneğin, uygulamanızın MMS mesajları göndermesi gerekiyorsa MMS mesajı gönderemeyen tüm ağların size bildirilmemesi için NetworkRequest bölümüne NET_CAPABILITY_MMS ekleyin. Uygulamanız yalnızca P2P kablosuz bağlantıyla ilgileniyorsa TRANSPORT_WIFI_AWARE ekleyin. İnternette bir sunucuyla veri aktarmak istiyorsanız NET_CAPABILITY_INTERNET ve NET_CAPABILITY_VALIDATED faydalı olabilir.

Örnek geri arama dizisi

Bu bölümde, mobil bağlantıya sahip bir cihazda hem varsayılan hem de normal geri çağırma kaydeden bir uygulamanın alabileceği geri çağırmaların sırası açıklanmaktadır. Bu örnekte, cihaz iyi bir kablosuz erişim noktasına bağlanır, ardından bağlantısı kesilir. Örnekte ayrıca cihazda Mobil veri her zaman açık ayarının etkin olduğu da varsayılır.

Zaman çizelgesi aşağıdaki gibidir:

  1. Uygulama registerNetworkCallback() öğesini çağırdığında geri arama, yalnızca bu ağ kullanılabilir olduğundan mobil ağ için onAvailable(), onNetworkCapabilitiesChanged() ve onLinkPropertiesChanged() adlı kişilerden gelen aramaları hemen alır. Başka bir ağ varsa uygulama, diğer ağ için de geri çağırmalar alır.

    Kayıt ağı geri çağırma etkinliğini ve etkinlik tarafından tetiklenen geri çağırmaları gösteren durum şeması
    Şekil 1. registerNetworkCallback() çağrıldıktan sonra uygulamanın durumu.

  2. Ardından, uygulama registerDefaultNetworkCallback() işlevini çağırır. Mobil ağ varsayılan ağ olduğundan, varsayılan ağ geri çağırma özelliği mobil ağ için onAvailable(), onNetworkCapabilitiesChanged() ve onLinkPropertiesChanged() adreslerine arama almaya başlar. Varsayılan olmayan başka bir ağ çalışıyorsa uygulama varsayılan olmayan ağ için çağrı alamaz.

    Varsayılan ağ geri çağırma etkinliğini ve etkinlik
tarafından tetiklenen geri çağırmaları
    Şekil 2. Varsayılan ağ kaydedildikten sonraki uygulamanın durumu.

  3. Daha sonra cihaz (sınırsız) bir kablosuz ağa bağlanır. Normal ağ geri çağırma işlemi kablosuz ağ için onAvailable(), onNetworkCapabilitiesChanged() ve onLinkPropertiesChanged() çağrıları alır.

    Uygulama yeni bir ağa bağlandığında tetiklenen geri çağırmaları gösteren durum şeması
    Şekil 3. Sınırsız bir kablosuz ağa bağlandıktan sonraki uygulama durumu.

  4. Bu noktada, kablosuz ağın doğrulaması biraz zaman alabilir. Bu durumda, normal ağ geri çağırması için yapılan onNetworkCapabilitiesChanged() çağrıları NET_CAPABILITY_VALIDATED özelliğini içermez. Kısa bir süre sonra, onNetworkCapabilitiesChanged() numaralı telefonu arar. Buradaki yeni özellikler arasında NET_CAPABILITY_VALIDATED bulunur. Çoğu durumda, doğrulama çok hızlı bir şekilde yapılır.

    Kablosuz ağ doğrulandığında sistem bu ağı mobil ağ yerine tercih eder, çünkü bunun başlıca nedeni bunun sınırsız olmasıdır. Kablosuz ağ, varsayılan ağ haline gelir. Bu nedenle varsayılan ağ geri çağırması, kablosuz ağ için onAvailable(), onNetworkCapabilitiesChanged() ve onLinkPropertiesChanged() çağrıları alır. Mobil ağ arka plana gider ve normal ağ geri çağırması mobil ağ için onLosing() numarasına bir çağrı alır.

    Bu örnekte, mobil verinin bu cihaz için her zaman açık olduğu varsayıldığından, mobil ağ hiçbir zaman kesilmez. Bu ayar devre dışı bırakılırsa bir süre sonra mobil ağ bağlantısı kesilir ve normal şebeke geri çağırması için onLost() numaralı telefona çağrı yapılır.

    Kablosuz ağ bağlantısı doğrulandığında tetiklenen geri çağırmaları gösteren durum şeması
    Şekil 4. Kablosuz ağ doğrulandıktan sonraki uygulamanın durumu.

  5. Daha sonra yine de, kapsama alanı dışına çıktığı için cihazın kablosuz bağlantısı aniden kesilir. Kablosuz bağlantı kesildiğinden, normal ağ geri çağırması kablosuz bağlantı için onLost() çağrısı alır. Yeni varsayılan ağ mobil olduğundan, varsayılan ağ geri çağırma işlevi mobil ağ için onAvailable(), onNetworkCapabilitiesChanged() ve onLinkPropertiesChanged() çağrıları alır.

    Kablosuz ağ bağlantısı kesildiğinde tetiklenen geri çağırmaları gösteren durum şeması
    Şekil 5. Kablosuz ağ bağlantısı kesildikten sonra uygulamanın durumu.

Mobil veri her zaman açık ayarı devre dışıysa kablosuz bağlantı kesildiğinde cihaz bir mobil ağa yeniden bağlanmaya çalışır. Resim de benzerdir ancak onAvailable() çağrıları için kısa bir ek gecikme vardır ve mobil kullanılabilir hale geldiğinden normal ağ geri araması da onAvailable(), onNetworkCapabilitiesChanged() ve onLinkPropertiesChanged() çağrıları alır.

Veri aktarımı için ağın kullanımıyla ilgili kısıtlamalar

Ağ geri çağırma işleviyle bir ağı görebilmek, uygulamanızın veri aktarımı için bu ağı kullanabileceği anlamına gelmez. Bazı ağlar internet bağlantısı sağlamaz ve bazı ağlar da ayrıcalıklı uygulamalarla sınırlı olabilir. İnternet bağlantısını kontrol etmek için NET_CAPABILITY_INTERNET ve NET_CAPABILITY_VALIDATED sayfalarına bakın.

Arka plan ağlarının kullanımı da izin kontrollerine tabidir. Uygulamanız bir arka plan ağı kullanmak istiyorsa CHANGE_NETWORK_STATE iznine ihtiyacı vardır.

Bu izne sahip uygulamalar, cihaz bir kablosuz ağa bağlıyken sistemin mobil ağ gibi olmayan bir ağı göstermeyi denemesine olanak tanır. Bu tür bir uygulama, ağ tetiklendiğinde çağrılması için bir NetworkCallback ile ConnectivityManager.requestNetwork(NetworkRequest, NetworkCallback) çağırır.