नेटवर्क डेटा के इस्तेमाल को ऑप्टिमाइज़ करें

स्मार्टफ़ोन के जीवन में, सेल्युलर डेटा प्लान की लागत आसानी से डिवाइस की लागत से ज़्यादा हो जाता है. Android 7.0 (एपीआई लेवल 24) पर और बाद में, उपयोगकर्ता पूरे डिवाइस के हिसाब से डेटा बचाने की सेटिंग को चालू कर सकते हैं उनके डिवाइस का डेटा खर्च ऑप्टिमाइज़ कर सकती हैं और कम डेटा का इस्तेमाल कर सकती हैं. यह क्षमता खास तौर पर तब काम आता है, जब बिलिंग साइकल खत्म होने के समय पर रोमिंग में होता है. या छोटे प्रीपेड डेटा पैक के लिए.

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

Android 7.0 (एपीआई लेवल 24) ConnectivityManager अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है एपीआई, जिसकी मदद से ऐप्लिकेशन को लोगों का डेटा वापस पाने का तरीका बताया जाता है सेवर की सेटिंग और मॉनिटर करने की सेटिंग बदलाव. ऐप्लिकेशन के लिए यह देखना अच्छा तरीका माना जाता है कि उपयोगकर्ता ने डेटा बचाने की सेटिंग को चालू किया है और फ़ोरग्राउंड को सीमित करने और बैकग्राउंड डेटा खर्च.

डेटा बचाने की सेटिंग से जुड़ी प्राथमिकताएं देखना

Android 7.0 (एपीआई लेवल 24) और उसके बाद वाले वर्शन पर, ऐप्लिकेशन ConnectivityManager एपीआई ताकि यह तय किया जा सके कि डेटा के इस्तेमाल से जुड़ी कौन-कौनसी पाबंदियां लागू हैं. कॉन्टेंट बनाने getRestrictBackgroundStatus() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है तरीका इनमें से कोई एक वैल्यू दिखाता है:

RESTRICT_BACKGROUND_STATUS_DISABLED
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है डेटा बचाने की सेटिंग बंद है.
RESTRICT_BACKGROUND_STATUS_ENABLED
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है उपयोगकर्ता ने इस ऐप्लिकेशन के लिए डेटा बचाने की सेटिंग चालू की है. ऐप्लिकेशन को डेटा सीमित करने की कोशिश करनी चाहिए फ़ोरग्राउंड में इस्तेमाल करें और बैकग्राउंड में लागू होने वाली पाबंदियों को अच्छे से मैनेज करें डेटा खर्च को कम या ज़्यादा किया जा सकता है.
RESTRICT_BACKGROUND_STATUS_WHITELISTED
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है उपयोगकर्ता ने डेटा बचाने की सेटिंग चालू की है, लेकिन ऐप्लिकेशन इसे बायपास कर सकता है. ऐप्लिकेशन को अब भी फ़ोरग्राउंड और बैकग्राउंड डेटा के इस्तेमाल को सीमित करने की कोशिश करनी चाहिए.

जब डिवाइस सीमित डेटा वाले नेटवर्क से कनेक्ट हो, तब डेटा खर्च को सीमित करें, भले ही डेटा बचाने की सेटिंग बंद कर दिया जाता है या ऐप्लिकेशन को इसे बायपास करने की अनुमति होती है. नीचे दिया गया सैंपल कोड, ConnectivityManager.isActiveNetworkMetered() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है और ConnectivityManager.getRestrictBackgroundStatus() तय कर सकते हैं कि ऐप्लिकेशन को इनका इस्तेमाल करना चाहिए:

Kotlin

(getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager).apply {
    // Checks if the device is on a metered network
    if (isActiveNetworkMetered) {
        // Checks user’s Data Saver settings.
        when (restrictBackgroundStatus) {
            RESTRICT_BACKGROUND_STATUS_ENABLED -> {
                // Background data usage is blocked for this app. Wherever possible,
                // the app should also use less data in the foreground.
            }
            RESTRICT_BACKGROUND_STATUS_WHITELISTED -> {
                // The app is allowed to bypass Data Saver. Nevertheless, wherever possible,
                // the app should use less data in the foreground and background.
            }
            RESTRICT_BACKGROUND_STATUS_DISABLED -> {
                // Data Saver is disabled. Since the device is connected to a
                // metered network, the app should use less data wherever possible.
            }
        }
    } else {
        // The device is not on a metered network.
        // Use data as required to perform syncs, downloads, and updates.
    }
}

Java

ConnectivityManager connMgr = (ConnectivityManager)
        getSystemService(Context.CONNECTIVITY_SERVICE);
// Checks if the device is on a metered network
if (connMgr.isActiveNetworkMetered()) {
  // Checks user’s Data Saver settings.
  switch (connMgr.getRestrictBackgroundStatus()) {
    case RESTRICT_BACKGROUND_STATUS_ENABLED:
    // Background data usage is blocked for this app. Wherever possible,
    // the app should also use less data in the foreground.

    case RESTRICT_BACKGROUND_STATUS_WHITELISTED:
    // The app is allowed to bypass Data Saver. Nevertheless, wherever possible,
    // the app should use less data in the foreground and background.

    case RESTRICT_BACKGROUND_STATUS_DISABLED:
    // Data Saver is disabled. Since the device is connected to a
    // metered network, the app should use less data wherever possible.
  }
} else {
  // The device is not on a metered network.
  // Use data as required to perform syncs, downloads, and updates.
}

ध्यान दें: Android TV पर यह तरीका अलग होता है. इसके बजाय बैकग्राउंड में वीडियो इस्तेमाल करने से रोकने के लिए, Android TV सिर्फ़ इसे थ्रॉटल करता है. कब फ़ोरग्राउंड में, ऐप्लिकेशन 800 केबीपीएस तक सीमित होते हैं. साथ ही, बैकग्राउंड में होने पर, आवेदन की सीमा 10 केबीपीएस तक होती है. इस्तेमाल की जाने वाली चीज़ें कब जाना चाहिए, यह पता लगाने के लिए ConnectivityManager.isActiveNetworkMetered() टीवी पर डेटा खर्च को सीमित करें.

डेटा से जुड़ी पाबंदी की अनुमतियों का अनुरोध करें

अगर आपके ऐप्लिकेशन को बैकग्राउंड में डेटा इस्तेमाल करना है, तो वह डेटा ऐक्सेस करने का अनुरोध कर सकता है ऐक्सेस पर पाबंदी लगाने के लिए Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इंटेंट में आपके ऐप्लिकेशन के पैकेज नाम का यूआरआई शामिल है: उदाहरण के लिए, package:MY_APP_ID.

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

डेटा बचाने की सेटिंग से जुड़ी प्राथमिकताओं में हुए बदलावों को मॉनिटर करें

ऐप्लिकेशन, डेटा बचाने की सेटिंग में किए गए बदलावों पर नज़र रख सकते हैं. इसके लिए, BroadcastReceiver से ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED को और डायनैमिक तौर पर सुनें पाने वाले को इसके साथ रजिस्टर किया जा रहा है Context.registerReceiver(). जब किसी ऐप्लिकेशन को यह ब्रॉडकास्ट मिलता है, तो उसे जांच करनी चाहिए कि नए डेटा सेवर की सुविधा चालू है या नहीं कॉल करने की सेटिंग चुनने पर, ConnectivityManager.getRestrictBackgroundStatus().

ध्यान दें: सिस्टम यह ब्रॉडकास्ट सिर्फ़ उन ऐप्लिकेशन को भेजता है जिनके लिए डाइनैमिक तौर पर रजिस्टर किया गया है उन्हें Context.registerReceiver(). जो ऐप्लिकेशन अपने मेनिफ़ेस्ट में इस ब्रॉडकास्ट को पाने के लिए रजिस्टर करेंगे उन्हें यह मैसेज नहीं मिलेगा.

Android डीबग ब्रिज निर्देशों की मदद से जांच करें

Android डीबग ब्रिज (ADB) कुछ निर्देश देता है, जिनका इस्तेमाल डेटा बचाने की सेटिंग में आपके ऐप्लिकेशन की जांच करने के लिए किया जा सकता है शर्तें. नेटवर्क की जांच की जा सकती है और उसे कॉन्फ़िगर किया जा सकता है ऐप्लिकेशन को सीमित डेटा वाले डिवाइसों पर टेस्ट करने के लिए, वायरलेस नेटवर्क को सीमित डेटा वाले नेटवर्क के तौर पर सेट करें या नेटवर्क.

$ adb shell dumpsys netpolicy
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है ऐसी रिपोर्ट जनरेट करता है जिसमें मौजूदा ग्लोबल बैकग्राउंड नेटवर्क शामिल है पाबंदी सेटिंग, ऐसे पैकेज यूआईडी जिन्हें फ़िलहाल डेटा बचाने की सेटिंग को बायपास करने की अनुमति है, और उन पैकेज के लिए नेटवर्क की अनुमतियां जो पहले से मालूम हैं.
$ adb shell cmd netpolicy
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है नेटवर्क पॉलिसी मैनेजर (netpolicy) के निर्देशों की पूरी सूची दिखाता है.
$ adb shell cmd netpolicy set restrict-background <boolean>
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इससे true पास होने पर डेटा बचाने की सेटिंग चालू या बंद होगी या false.
$ adb shell cmd netpolicy add restrict-background-whitelist <UID>
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है बैकग्राउंड को अनुमति देने के लिए, तय किए गए पैकेज का यूआईडी, अनुमति वाली सूची (whitelist) में जोड़ता है सीमित डेटा खर्च.
$ adb shell cmd netpolicy remove restrict-background-whitelist <UID>
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है ब्लॉक करने के लिए, दिए गए पैकेज का यूआईडी, अनुमति वाली सूची (whitelist) से हटाता है डेटा बचाने की सेटिंग चालू होने पर, बैकग्राउंड में होने वाले सीमित डेटा का इस्तेमाल.
$ adb shell cmd netpolicy list wifi-networks
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है सभी वाई-फ़ाई नेटवर्क की सूची दिखाता है, ताकि यह पता चल सके कि वे सीमित डेटा वाले वाई-फ़ाई नेटवर्क हैं या नहीं.
$ adb shell cmd netpolicy set metered-network <WIFI_SSID> true
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है यह वाई-फ़ाई को, मीटर वाले SSID के साथ सेट करता है. इससे आपको अपने सीमित डेटा वाले नेटवर्क पर सीमित डेटा वाला नेटवर्क.