नेटवर्क से जुड़ी समस्याओं को हल करना

किसी ऐप्लिकेशन से जनरेट होने वाले नेटवर्क ट्रैफ़िक का असर, आपके ऐप्लिकेशन की डिवाइस की बैटरी लाइफ़. उस ट्रैफ़िक को ऑप्टिमाइज़ करने के लिए, आपको उसे मेज़र करना होगा और उसके सोर्स की पहचान कर सकता है. नेटवर्क अनुरोध, सीधे उपयोगकर्ता की कार्रवाई से, आपके ऐप्लिकेशन कोड से या आपके ऐप्लिकेशन के साथ इंटरैक्ट करने वाले सर्वर से मिल सकते हैं.

इस विषय में, नेटवर्क ट्रैफ़िक को मॉनिटर करने और अलग-अलग कैटगरी में बांटने का तरीका बताया गया है. समस्याओं को पहचानने और उन्हें हल करने के बारे में दिशा-निर्देश देती है.

अनुरोधों को मॉनिटर करने के लिए नेटवर्क प्रोफ़ाइलर का इस्तेमाल करना

नेटवर्क प्रोफ़ाइलर का इस्तेमाल करके, ऐप्लिकेशन के नेटवर्क अनुरोधों के लिए किया जाता है. आपके पास यह मॉनिटर करने का विकल्प है कि आपका ऐप्लिकेशन कब और कैसे ट्रांसफ़र होता है डेटा और दिए गए कोड को सही तरीके से ऑप्टिमाइज़ कर सकता है.



पहली इमेज. नेटवर्क ट्रैफ़िक को ट्रैक करना. नेटवर्क ट्रैफ़िक पैटर्न का सुझाव अनुरोधों को प्रीफ़ेच करके उस परफ़ॉर्मेंस को बहुत ज़्यादा बेहतर बनाया जा सकता है या अपलोड करना.

डेटा ट्रांसफ़र की फ़्रीक्वेंसी और हर कनेक्शन के दौरान ट्रांसफ़र किए गए डेटा की मात्रा पर नज़र रखकर, अपने ऐप्लिकेशन के उन हिस्सों की पहचान की जा सकती है जिनमें बैटरी की खपत को कम किया जा सकता है. आम तौर पर, आपको इसलिए, थोड़ी देर के लिए दर्शकों की संख्या बढ़ाई जा सकती है.

ट्रांसफ़र में होने वाली बढ़ोतरी की वजह का बेहतर तरीके से पता लगाने के लिए, ट्रैफ़िक के आंकड़ों का एपीआई आपको दिए गए थ्रेड में सॉकेट से होने वाले डेटा ट्रांसफ़र को टैग करने के लिए इसका उपयोग कर रहा है TrafficStats.setThreadStatsTag(). इस फ़ंक्शन को कॉल करने से, किसी खास थ्रेड के लिए सभी ट्रैफ़िक अपने-आप टैग नहीं होता. टैग को सॉकेट पर लागू करना पड़ता है.

थ्रेड टैग सेट होने के बाद, TrafficStats.tagSocket() और TrafficStats.untagSocket() का इस्तेमाल करके, अलग-अलग सॉकेट को मैन्युअल तरीके से टैग और अनटैग किया जा सकता है. अगर थ्रेड पर सॉकेट खोला जाता है या सर्वर सॉकेट को खोला जाता है, तब भी टैग लागू किया जाता है कनेक्शन स्वीकार करता है.

एक ही सॉकेट को कई थ्रेड के साथ एक साथ ऐक्सेस करने पर, नेटवर्क पैकेट भेजे या पाए जाने के समय सॉकेट में मौजूद टैग का इस्तेमाल किया जाएगा. यह टैग, बफ़रिंग और फिर से भेजने की वजह से, उपयोगकर्ता के डेटा लिखने या पढ़ने के समय मौजूद टैग से अलग हो सकता है.

उदाहरण के लिए, अलग-अलग तरह के नेटवर्क को दर्शाने के लिए कॉन्सटेंट तय किए जा सकते हैं ट्रैफ़िक, जैसा कि नीचे दिए गए कोड सैंपल में दिखाया गया है:

Kotlin

const val USER_INITIATED = 0x1000
const val APP_INITIATED = 0x2000
const val SERVER_INITIATED = 0x3000

Java

public static final int USER_INITIATED = 0x1000;
public static final int APP_INITIATED = 0x2000;
public static final int SERVER_INITIATED = 0x3000;

इसके बाद, अपने नेटवर्क अनुरोधों को इस हिसाब से टैग किया जा सकता है:

Kotlin

TrafficStats.setThreadStatsTag(USER_INITIATED)
TrafficStats.tagSocket(outputSocket)
// Transfer data using socket
TrafficStats.untagSocket(outputSocket)

Java

TrafficStats.setThreadStatsTag(USER_INITIATED);
TrafficStats.tagSocket(outputSocket);
// Transfer data using socket
TrafficStats.untagSocket(outputSocket);

HttpURLConnection लाइब्रेरी, मौजूदा TrafficStats.getThreadStatsTag() वैल्यू के आधार पर सॉकेट को अपने-आप टैग करती है. यह लाइब्रेरी, इसके ज़रिए रीसाइकल किए जाने पर सॉकेट को टैग और अनटैग भी करती है कीप-अलाइव पूल, जैसा कि यहां दिए गए कोड सैंपल में दिखाया गया है:

Kotlin

class IdentifyTransferSpikeTask {
    @WorkerThread
    fun request(url: String) {
        TrafficStats.setThreadStatsTag(APP_INITIATED)
        // Make network request using HttpURLConnection.connect()
        ...
        TrafficStats.clearThreadStatsTag()
    }
}

Java

public class IdentifyTransferSpikeTask {
    @WorkerThread
    public void request(String url) {
        TrafficStats.setThreadStatsTag(APP_INITIATED);
        // Make network request using HttpURLConnection.connect()
        ...
        TrafficStats.clearThreadStatsTag();
    }
}

नेटवर्क ट्रैफ़िक के टाइप का विश्लेषण करें

अपने ऐप्लिकेशन से जनरेट होने वाले नेटवर्क ट्रैफ़िक को देखते समय, आपको ट्रैफ़िक के सोर्स को समझ सकें, ताकि उसे सही तरीके से ऑप्टिमाइज़ किया जा सके. अगर आपका ऐप्लिकेशन उपयोगकर्ता की कार्रवाइयों का जवाब दे रहा है, तो हो सकता है कि आपके ऐप्लिकेशन से बार-बार होने वाली नेटवर्क गतिविधि पूरी तरह सही हो. हालांकि, अगर आपका ऐप्लिकेशन फ़ोरग्राउंड में नहीं है या डिवाइस किसी पॉकेट या पर्स में है, तो यह पूरी तरह गलत हो सकती है.

उपयोगकर्ता की ओर से शुरू किए गए ट्रैफ़िक का विश्लेषण करें

जब कोई उपयोगकर्ता, उपयोगकर्ता की ओर से शुरू किया गया नेटवर्क ट्रैफ़िक को एक साथ बेहतर तरीके से ग्रुप में रख सकता है, तो आपके ऐप्लिकेशन में कोई खास टास्क कर रहा हो या यह अलग-अलग तरह से काम कर रहा हो उपयोगकर्ता, ऐसी अतिरिक्त जानकारी का अनुरोध करता है जो आपके ऐप्लिकेशन को चाहिए. आपका लक्ष्य उपयोगकर्ता की ओर से शुरू किए गए नेटवर्क ट्रैफ़िक का विश्लेषण करना है, ताकि बार-बार आने वाले ट्रैफ़िक के पैटर्न को समय के साथ नेटवर्क का इस्तेमाल और ग्रुप बनाकर उनकी फ़्रीक्वेंसी कम करने की कोशिश करना अनुरोध किए जा सकते हैं.

उपयोगकर्ता के अनुरोधों में उम्मीद न होने की वजह से इस प्रोसेस को ऑप्टिमाइज़ करना मुश्किल होता है आपके ऐप्लिकेशन में नेटवर्क के इस्तेमाल का टाइप क्या है. साथ ही, उपयोगकर्ता जब चाहे, तो वे सक्रिय रूप से किसी ऐप्लिकेशन का इस्तेमाल कर रहे हैं, इसलिए परफ़ॉर्मेंस के लिए अनुरोध में देरी होने से हो सकता है उपयोगकर्ताओं को खराब अनुभव देने में मदद मिलती है. आम तौर पर, जब कोई उपयोगकर्ता सीधे आपके ऐप्लिकेशन के साथ इंटरैक्ट कर रहा हो, तो आपको नेटवर्क के बेहतर इस्तेमाल के बजाय, उपयोगकर्ता को तुरंत जवाब देने को प्राथमिकता देनी चाहिए.

उपयोगकर्ता की ओर से शुरू किए गए ट्रैफ़िक को ऑप्टिमाइज़ करने के सुझावों के लिए ऑप्टिमाइज़ करें यूज़र-इनीशिएटेड अनुरोध हैं.

ऐप्लिकेशन से शुरू किए गए ट्रैफ़िक का विश्लेषण करें

ऐप्लिकेशन से शुरू किया गया नेटवर्क ट्रैफ़िक आम तौर पर वह इलाका होता है, जहां आपके पास नेटवर्क बैंडविथ के कुशल इस्तेमाल पर काफ़ी असर पड़ सकता है. विश्लेषण में अपने ऐप की नेटवर्क गतिविधि देखें, समय-समय पर इस्तेमाल न होने की अवधि देखें और तय करें कि इन्हें बढ़ाया जा सकता है. अगर आपको नेटवर्क से लगातार ऐक्सेस करने के पैटर्न दिखते हैं, तो डिवाइस रेडियो को वापस स्विच करने के लिए, इस ट्रैफ़िक को बैच बनाकर देखें कम पावर वाले मोड में स्विच करता है.

ऐप्लिकेशन से शुरू किए गए ट्रैफ़िक को ऑप्टिमाइज़ करने के सुझावों के लिए, ऑप्टिमाइज़ करें ऐप्लिकेशन की मदद से शुरू किया गया अनुरोध हैं.

सर्वर से शुरू किए गए ट्रैफ़िक का विश्लेषण करना

आपके ऐप्लिकेशन से कम्यूनिकेट करने वाले सर्वर की ओर से शुरू की गई नेटवर्क गतिविधि भी आम तौर पर, इस क्षेत्र में प्रॉडक्ट के बेहतर इस्तेमाल पर असर पड़ता है. का इस्तेमाल किया जा सकता है. Firebase क्लाउड से मैसेज भेजकर, (FCM) एक लाइटवेट वर्शन है डेटा को सर्वर से किसी ऐप्लिकेशन इंस्टेंस पर भेजने के लिए इस्तेमाल किया जाता है. FCM का इस्तेमाल करके, आपका सर्वर किसी खास डिवाइस पर आपके ऐप्लिकेशन को चलने की सूचना दे सकता है तो इसके लिए नया डेटा उपलब्ध है.

सर्वर से शुरू किए गए ट्रैफ़िक को ऑप्टिमाइज़ करने के सुझावों के लिए, Optimize सर्वर से चालू अनुरोध हैं.

नेटवर्क ट्रैफ़िक के असर को विज़ुअलाइज़ करने के लिए, बैटरी हिस्टॉरियन का इस्तेमाल करें

बैटरी इतिहासकार एक ऐसा टूल है जो एक तय समयावधि में डिवाइस की बैटरी की खपत को दिखाता है. आपकी नेटवर्क गतिविधि से बैटरी पर क्या असर पड़ता है, इसका विश्लेषण करने के लिए इस टूल का इस्तेमाल किया जा सकता है इस्तेमाल. उदाहरण के लिए, बैटरी हिस्टॉरियन आपको दिखा सकता है कि आपका ऐप्लिकेशन सेल्युलर रेडियो का इस्तेमाल आपकी उम्मीद से ज़्यादा कर रहा है. Reader Revenue Manager को सेट अप करने के बारे में बैटरी हिस्टॉरियन का इस्तेमाल करने के बारे में जानने के लिए, बैटरी आंकड़ों के साथ प्रोफ़ाइल बैटरी खर्च देखें और बैटरी हिस्टॉरियन हैं.