डिवाइस को चालू रखें

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

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

वेक लॉक के विकल्प

अपने ऐप्लिकेशन में वेकलॉक की सुविधा जोड़ने से पहले, यह देखें कि आपके ऐप्लिकेशन का इस्तेमाल किया जा रहा है या नहीं मामले नीचे दिए गए वैकल्पिक समाधानों में से किसी एक का समर्थन करते हैं:

  • अगर आपका ऐप्लिकेशन लंबे समय तक चलने वाले एचटीटीपी डाउनलोड कर रहा है, तो DownloadManager.

  • अगर आपका ऐप्लिकेशन किसी बाहरी सर्वर से डेटा सिंक कर रहा है, तो सिंक अडैप्टर.

  • अगर आपका ऐप्लिकेशन बैकग्राउंड में चलने वाली सेवाओं का इस्तेमाल करता है, तो JobScheduler या Firebase क्लाउड से मैसेज ट्रिगर करने के लिए डिज़ाइन किया गया है.

  • साथी डिवाइस: जब आपको साथी ऐप्लिकेशन को चलाना जारी रखना हो रेंज में हों, तो कंपैनियन डिवाइस मैनेजर का इस्तेमाल करें.

स्क्रीन चालू रखें

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

Kotlin

class MainActivity : Activity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
    }
}

Java

public class MainActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
  }
}

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

इसे लागू करने का एक अन्य तरीका आपके ऐप्लिकेशन की लेआउट एक्सएमएल फ़ाइल में है. android:keepScreenOn एट्रिब्यूट:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:keepScreenOn="true">
    ...
</RelativeLayout>

android:keepScreenOn="true" का इस्तेमाल करने पर, FLAG_KEEP_SCREEN_ON. अपने ऐप्लिकेशन के लिए, सबसे सही तरीका इस्तेमाल किया जा सकता है. सेटिंग का फ़ायदा प्रोग्रैम्ड तरीके से फ़्लैग करता है कि यह आपको प्रोग्राम बनाकर फ़्लैग को बाद में मिटाएं. इससे, स्क्रीन को चालू किया जा सकेगा बंद करें.

टीवी के लिए ऐंबियंट मोड

टीवी पर, FLAG_KEEP_SCREEN_ON का इस्तेमाल इस तरह किया जाना चाहिए कि ऐंबियंट मोड चालू वीडियो प्लेबैक के दौरान. जब FLAG_KEEP_SCREEN_ON सेट नहीं होता है फ़ोरग्राउंड गतिविधि से, डिवाइस अपने-आप ऐंबियंट मोड में चला जाएगा कुछ समय तक कोई गतिविधि नहीं होती है.

सीपीयू बनाए रखें

अगर आपको डिवाइस स्लीप मोड (कम बैटरी मोड) में चला जाता है, तो आप PowerManager सिस्टम सर्विस की सुविधा वेक लॉक कहते हैं. वेक लॉक की मदद से, ऐप्लिकेशन आपके पावर की स्थिति को कंट्रोल कर सकता है होस्ट डिवाइस की सूची में शामिल है.

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

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

वेक लॉक का इस्तेमाल करने के लिए, सबसे पहले 'वेक लॉक' जोड़ें इसके लिए WAKE_LOCK अनुमति की मेनिफ़ेस्ट फ़ाइल होगी:

<uses-permission android:name="android.permission.WAKE_LOCK" />

अगर आपके ऐप्लिकेशन में कोई ऐसा ब्रॉडकास्ट रिसीवर है जो किसी सेवा का इस्तेमाल करके कुछ काम करता है, तो यहां बताया गया है कि सीधे तौर पर वेक लॉक कैसे सेट किया जाता है:

Kotlin

val wakeLock: PowerManager.WakeLock =
        (getSystemService(Context.POWER_SERVICE) as PowerManager).run {
            newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp::MyWakelockTag").apply {
                acquire()
            }
        }

Java

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
        "MyApp::MyWakelockTag");
wakeLock.acquire();

वेक लॉक को हटाने के लिए, कॉल करें wakelock.release(). इससे सीपीयू पर आपका दावा हट जाएगा. वेक लॉक को इसलिए हटाना ज़रूरी है कि बैटरी खर्च न हो, इसके लिए जैसे ही आपका ऐप्लिकेशन उसका इस्तेमाल पूरा कर ले.