पावर और बैटरी बचाएं

Wear OS पर, बैटरी की खपत कम होना खास तौर पर ज़रूरी है. Wear OS के डिज़ाइन के सिद्धांतों में, डिवाइस की बैटरी के इस्तेमाल पर काफ़ी ध्यान दिया जाता है. इसकी वजह यह है कि स्मार्टवॉच का फ़ॉर्म फ़ैक्टर छोटा होता है और इसका इस्तेमाल कम समय के इंटरैक्शन के लिए किया जाता है.

बड़े मोबाइल डिवाइसों की तुलना में, Wear OS डिवाइसों की बैटरी छोटी होती है. इसलिए, बैटरी की खपत ज़्यादा दिखती है. इसके अलावा, मोबाइल डिवाइस की तुलना में, Wear OS डिवाइस को चार्ज करने में उपयोगकर्ता को ज़्यादा मेहनत करनी पड़ती है. उपयोगकर्ता अपने मोबाइल डिवाइसों को दिन भर में अलग-अलग समय पर चार्ज कर सकते हैं. हालांकि, Wear OS डिवाइस को चार्ज करने से पहले, उन्हें उसे अपनी कलाई से हटाना होगा.

अपने ऐप्लिकेशन की बैटरी लाइफ़ को बेहतर बनाने के लिए, डिज़ाइन के इन सबसे सही तरीकों का पालन करें:

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

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

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

समय के साथ बैटरी खर्च पर नज़र रखना

आपके ऐप्लिकेशन को चलाने वाले Wear OS डिवाइस की बैटरी के आंकड़ों का विश्लेषण करने के लिए, अपनी डेवलपमेंट मशीन पर टर्मिनल विंडो में यह कमांड डालें:

adb shell dumpsys batterystats

GitHub पर मौजूद एक लाइब्रेरी में बैटरी के आंकड़े पार्सर की सुविधा है. इसकी मदद से, इस निर्देश को चलाया जा सकता है.

बैटरी लाइफ़ पर असर डालने वाले इवेंट

अपने ऐप्लिकेशन के बारे में सोचने से पहले, Wear OS डिवाइस पर बैटरी खर्च करने वाले इवेंट के बारे में ज़्यादा सोचना चाहिए.

नीचे दी गई टेबल में, Wear OS ऐप्लिकेशन में होने वाले कई सामान्य इवेंट के दौरान, बैटरी लाइफ़ पर पड़ने वाले असर को दिखाया गया है. हर डिवाइस में बैटरी खर्च होने की दर अलग-अलग होती है.

इवेंट बैटरी लाइफ़ पर असर इसे कम करने का तरीका
LTE और वाई-फ़ाई जैसे नेटवर्क ऐक्सेस करना बहुत ज़्यादा डिवाइस चार्ज होने तक, ज़रूरी न होने वाले नेटवर्क ऐक्सेस को रोकें.
स्क्रीन चालू करना और इंटरैक्टिव मोड शुरू करना ज़्यादा उपयोगकर्ता को ज़रूरत से ज़्यादा समय तक स्क्रीन चालू रखने के लिए न बढ़ावा दें. ऐसा अनुभव दें जिसमें हमेशा चालू रहने वाले मोड का इस्तेमाल किया गया हो. इसे ऐंबियंट मोड भी कहा जाता है.
जीपीएस सेंसर को ऐक्सेस करना ज़्यादा अगर हो सके, तो तब तक इंतज़ार करें, जब तक उपयोगकर्ता जीपीएस ऐक्सेस का अनुरोध न कर दे.
सीपीयू का इस्तेमाल ज़्यादा रखना ज़्यादा Jetpack Compose का इस्तेमाल करके, फ़्लो का इस्तेमाल करना.
धड़कन की दर का पता लगाने वाले सेंसर को ऐक्सेस करना सामान्य जगह पर सेंसर एपीआई से कॉलबैक पाने के दौरान, प्रोसेसर के चालू रहने के समय का इस्तेमाल करें. जैसे, Wear OS पर हेल्थ सेवाओं का इस्तेमाल करते समय.
ब्लूटूथ की मदद से किसी दूसरे डिवाइस को ऐक्सेस करना सामान्य जगह पर सेशन को छोटा रखें.
Wakelock को होल्ड करना सामान्य जगह पर मैन्युअल तरीके से वेकलॉक बनाने की संख्या कम करें और WorkManager का इस्तेमाल करें.

स्क्रीन के चालू रहने का समय कम करना

Wear OS ऐप्लिकेशन में, स्क्रीन के इस्तेमाल से जुड़े इन सिद्धांतों का पालन करें:

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

सीपीयू के इस्तेमाल को कम करना

अपने Wear OS ऐप्लिकेशन में, सीपीयू के इस्तेमाल से जुड़े इन सिद्धांतों का पालन करें:

  • इस्तेमाल को छोटा रखें.
  • आपके ऐप्लिकेशन की प्रोसेस के आइडल रहने का समय बढ़ाने के लिए, उससे जुड़ी सभी कार्रवाइयों को एक साथ करें.

डिवाइस के चालू रहने की अवधि को कम करना

ज़्यादातर मामलों में, ऐसे किसी भी ऑपरेशन से बचें जिससे आपका ऐप्लिकेशन स्लीप मोड में न जा पाए. जैसे, वेकलॉक. उदाहरण के लिए, हेल्थ और फ़िटनेस ऐप्लिकेशन में, लंबे समय तक चलने वाले वर्कआउट के लिए, वेकलॉक की ज़रूरत नहीं होती. सेंसर एपीआई से कॉलबैक मिलने पर, प्रोसेसर के चालू रहने के समय का इस्तेमाल करें. जैसे, Wear OS पर Health Services का इस्तेमाल करते समय.

कुछ मामलों में, वेकलॉक का इस्तेमाल करना ठीक है. जैसे, जब आपका ऐप्लिकेशन इनमें से कोई एक काम करता है:

  • बैकग्राउंड में मीडिया चलाता है.
  • WorkManager या JobScheduler का इस्तेमाल किया गया है. (बैकग्राउंड में जॉब चलाते समय, सिस्टम आपकी ओर से एक वॉकलॉक रखता है.)

Battery Historian की मदद से, लंबे समय तक चालू रहने वाले वॉकलॉक की अलग-अलग घटनाएं देखी जा सकती हैं. साथ ही, वॉकलॉक की कुल संख्या और उनकी अवधि की खास जानकारी भी देखी जा सकती है. देखें कि आपके ऐप्लिकेशन में कितने और कितनी देर तक वेकलॉक चालू रहते हैं. साथ ही, इस जानकारी की तुलना अपने ऐप्लिकेशन के इंटरैक्टिव इस्तेमाल के पैटर्न से करें:

  • अचानक होने वाले वेकलॉक की जांच करें.
  • अगर काम पूरा होने में उम्मीद से ज़्यादा समय लग रहा है, तो देखें कि क्या नेटवर्क की उपलब्धता जैसी किसी डिपेंडेंसी की वजह से काम रुका हुआ है.

यह जांचना कि आपका ऐप्लिकेशन कैसे इनऐक्टिव हो जाता है

देखें कि डिवाइस पर मुख्य इवेंट होने पर, चालू ऐप्लिकेशन क्या कर रहा है. जैसे:

  • स्क्रीन बंद हो जाती है और डिवाइस ऐंबियंट मोड में चला जाता है.
  • ऐप्लिकेशन को स्वाइप करके बंद किया गया हो.

ऐप्लिकेशन गतिविधि का विश्लेषण करने के लिए, नीचे दिए गए सेक्शन में दिखाए गए टूल का इस्तेमाल करें.

Power Profiler

Power Profiler को Android Studio मेन्यू में ऐक्सेस किया जा सकता है. इसके लिए, व्यू > टूल विंडो > प्रोफ़ाइलर को चुनें:

  1. स्क्रीन बंद होने और डिवाइस के ऐंबियंट मोड में जाने पर, सिस्टम ट्रेस की जांच करें.
  2. देखें कि कोई ऐसा काम तो नहीं चल रहा है जो बंद नहीं हो रहा. साथ ही, यह भी देखें कि डिवाइस का सीपीयू (CPU) कितना इस्तेमाल हो रहा है.

Perfetto

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

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

अपने ऐप्लिकेशन के शेड्यूल किए गए जॉब का विश्लेषण करना

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

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

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

साथ ही, Battery Historian ग्राफ़ की जांच करें और हर JobScheduler एंट्री देखें. किसी खास एंट्री पर कर्सर को कुछ देर तक रखने पर, Battery Historian, प्रोसेस को चलाने वाले ऐप्लिकेशन का नाम दिखाता है. इसके लिए, इन्हें आज़माएं:

  • आपके ऐप्लिकेशन के लिए, प्रोसेस पूरी होने में लगने वाला समय सही होना चाहिए.
  • देखें कि क्या जॉब आपके ऐप्लिकेशन के चलने के दौरान होती हैं या ये जॉब, बैकग्राउंड में समय-समय पर होने वाले काम से जुड़ी हैं.

सेंसर

Wear OS डिवाइसों में कई अलग-अलग सेंसर होते हैं, जैसे कि जीपीएस. ज़्यादातर मामलों में, सीधे SensorManager के साथ इंटरैक्ट करने के बजाय, Wear OS पर Health Services का इस्तेमाल करें. कई मामलों में, Health Services बैटरी की परफ़ॉर्मेंस को बेहतर बनाने के लिए, डेटा को बैच में इकट्ठा करती है.

अपने ऐप्लिकेशन में सेंसर के इस्तेमाल का विश्लेषण करने के लिए, अपनी डेवलपमेंट मशीन पर टर्मिनल विंडो में यह कमांड चलाएं:

adb shell dumpsys sensorservice

इस कमांड के नतीजों में ये चीज़ें दिखती हैं:

  • सेंसर के मौजूदा और पिछले रजिस्ट्रेशन.
  • सेंसर कॉन्फ़िगरेशन. इसमें, सेट होने पर बैचिंग भी शामिल है.
  • हाल ही में सैंपल किया गया डेटा.

सेंसर से अनरजिस्टर करने की सुविधा की जांच करना

यह पता लगाने के लिए कि आपका ऐप्लिकेशन, सेंसर डेटा को उम्मीद के मुताबिक फ़ेच करना बंद कर देता है या नहीं, इन स्थितियों की जांच करें:

  1. ऐप्लिकेशन को स्वाइप करके बंद करें.
  2. अपनी हथेली से स्क्रीन पर टैप करें. इससे स्क्रीन बंद हो जाती है या स्क्रीन को ऐंबियंट मोड में बदल दिया जाता है.

पिछले सेक्शन में दिए गए ADB कमांड का इस्तेमाल करके देखें कि सेंसर, रजिस्टर नहीं किए गए के तौर पर सही तरीके से दिख रहा है या नहीं.

डेटा लेयर

Data Layer API का इस्तेमाल करने पर, हर ट्रांसमिशन में कुछ पावर का इस्तेमाल होता है. खास तौर पर, अगर डेटा भेजने के लिए इस एपीआई का इस्तेमाल किया जाता है, तो डेटा पाने के लिए आपके ऐप्लिकेशन को चालू होना चाहिए. इन वजहों से, इस एपीआई का इस्तेमाल कम से कम करें.

डेटा लेयर एपीआई का इस्तेमाल करने के कुछ और सबसे सही तरीकों में ये शामिल हैं:

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

    सिर्फ़ उन स्टेटस में बदलाव ट्रांसमिट करें जो आपके यूज़र इंटरफ़ेस (यूआई) को अपडेट करते हैं. उदाहरण के लिए, अगर आपकी गतिविधि स्क्रीन पर "दौड़े गए किलोमीटर" की वैल्यू सिर्फ़ एक दशमलव वाली है, तो हर बार जब उपयोगकर्ता एक और मीटर आगे बढ़ता है, तब Wear OS पर स्थिति में बदलाव न भेजें.

अपने ऐप्लिकेशन में Data Layer API के इस्तेमाल का विश्लेषण करने के लिए, अपनी डेवलपमेंट मशीन पर टर्मिनल विंडो में यह कमांड चलाएं:

adb shell dumpsys activity service WearableService

इस निर्देश के नतीजों में ये शामिल हैं:

  • RpcService: इसकी मदद से, यह देखा जा सकता है कि MessageClient का इस्तेमाल करके कितनी बार और किन पाथ को कॉल किया जा रहा है.
  • DataService: इससे यह देखा जा सकता है कि DataClient का इस्तेमाल करके, डेटा आइटम कितनी बार सेट किए जा रहे हैं.

सेहत और फ़िटनेस से जुड़े ऐप्लिकेशन

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

  • ExerciseClient के लिए, ऐंबियंट मोड में सही तरीके से काम करने की पुष्टि करने के लिए, Battery Historian का इस्तेमाल करें. देखें कि आपका ऐप्लिकेशन, ExerciseUpdate डेटा पाने के लिए हर एक या दो मिनट से ज़्यादा बार तो नहीं चालू होता.
  • पूरे दिन सेहत की सामान्य निगरानी के लिए, PassiveMonitoringClient का इस्तेमाल करें. इस बारे में ज़्यादा जानने के लिए, बैकग्राउंड में सेहत और फ़िटनेस के डेटा को मॉनिटर करने का तरीका बताने वाली गाइड देखें.

टाइल और विजेट

अगर आपका ऐप्लिकेशन टाइल या कंप्लिकेशन के साथ काम करता है, तो ये सबसे सही तरीके अपनाएं:

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