स्मार्टवॉच की होम स्क्रीन के लिए, मेमोरी के इस्तेमाल को ऑप्टिमाइज़ करें

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

  • ऐंबियंट मोड में, स्मार्टवॉच की होम स्क्रीन 10 एमबी से ज़्यादा मेमोरी का इस्तेमाल नहीं कर सकती.
  • इंटरैक्टिव मोड में, स्मार्टवॉच की होम स्क्रीन 100 एमबी से ज़्यादा मेमोरी का इस्तेमाल नहीं कर सकती.

सिस्टम, स्मार्टवॉच की होम स्क्रीन पर मेमोरी के इस्तेमाल का हिसाब लगाता है

Watch Face Format का इस्तेमाल करने वाली स्मार्टवॉच की होम स्क्रीन पर, किसी इमेज या बिटमैप फ़ॉन्ट के साइज़ का हिसाब लगाने के लिए, सिस्टम यह तरीका अपनाता है:

  1. इमेज या बिटमैप फ़ॉन्ट को डिकंप्रेस करता है.
  2. यह इमेज या बिटमैप फ़ॉन्ट की जांच करता है, ताकि यह पता लगाया जा सके कि इसे इनमें से किसी एक तरीके से ऑप्टिमाइज़ किया जा सकता है या नहीं:
    • डिसप्ले साइज़ के हिसाब से साइज़ बदला गया.
    • पूरी तरह से पारदर्शी पिक्सल हटाने के लिए काटा गया.
    • अगर क्वालिटी में कोई बदलाव किए बिना ऐसा किया जा सकता है, तो RGB565 में डाउनसैंपल किया जाता है.

बॉउंडिंग बॉक्स के आधार पर, सिस्टम इमेज या बिटमैप फ़ॉन्ट का साइज़, बाइट में कैलकुलेट करता है. यह साइज़ इनमें से किसी एक के तौर पर होता है:

  • RGBA8888 का इस्तेमाल करने वाली इमेज और फ़ॉन्ट के लिए: \( 4 \times width \times height \)
  • RGB565 का इस्तेमाल करने वाली इमेज और फ़ॉन्ट के लिए: \( 2 \times width \times height \)
  • ALPHA_8 बिट मैप कॉन्फ़िगरेशन का इस्तेमाल करने वाली इमेज और फ़ॉन्ट के लिए: \( width \times height \)

इंटरैक्टिव मोड

इंटरैक्टिव मोड के लिए मेमोरी के इस्तेमाल का हिसाब लगाते समय, सिस्टम इनका हिसाब लगाता है:

  1. किसी भी वेक्टर फ़ॉन्ट का प्रोसेस नहीं किया गया साइज़.
  2. सिस्टम के डिफ़ॉल्ट फ़ॉन्ट के इस्तेमाल का अनुमानित डेटा.
  3. काट-छांट, साइज़ बदलने या फिर फ़ॉर्मैट बदलने के बाद, इमेज और बिटमैप फ़ॉन्ट का कुल साइज़.

कॉन्फ़िगरेशन

स्मार्टवॉच की जिन होम स्क्रीन में कॉन्फ़िगरेशन होते हैं उनके लिए, सिस्टम अलग-अलग कॉन्फ़िगरेशन में इस्तेमाल किए गए संसाधनों का कुल साइज़ कैलकुलेट करने की कोशिश करता है. कभी-कभी, जब कॉम्बिनेशन की संख्या बहुत ज़्यादा होती है, तो सिस्टम यह अनुमान लगाता है कि अलग-अलग कॉन्फ़िगरेशन में एक साथ कितने संसाधनों का इस्तेमाल किया जाता है. हालांकि, यह अनुमान थोड़ा ज़्यादा होता है.

ऐंबियंट मोड और लेयर

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

  1. स्मार्टवॉच के एलिमेंट के नीचे मौजूद सभी चीज़ें. स्मार्टवॉच की होम स्क्रीन का ज़्यादातर "मुख्य हिस्सा" इस लेयर में होता है. इस लेयर को बनाने के लिए, कितनी भी इमेज का इस्तेमाल किया गया हो, सिस्टम इसे एक फ़ुल-स्क्रीन इमेज के तौर पर गिनता है.
  2. स्मार्टवॉच की होम स्क्रीन पर मौजूद हाथ, डिजिटल डिसप्ले या प्लैटफ़ॉर्म बाइंडिंग वाले विजेट, जो डाइनैमिक तौर पर रेंडर किए जाते हैं.
  3. सोर्स एक्सएमएल फ़ाइल में, स्मार्टवॉच की मिनट और घंटे की सुई और कॉम्प्लीकेशन के बाद मौजूद सभी एलिमेंट.

आम तौर पर, ऐंबियंट मोड में ज़्यादातर मेमोरी, बिटमैप फ़ॉन्ट से खर्च होती है. खास तौर पर, बड़े फ़ॉन्ट से.

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

इस सेक्शन में दिए गए सुझावों को अपनाकर, स्मार्टवॉच की ऐसी होम स्क्रीन बनाई जा सकती है जिसकी मेमोरी की खपत इन सीमाओं के अंदर हो.

बिटमैप फ़ॉन्ट को काटें और उनका साइज़ बदलें

अपनी इमेज और BitmapFont ऑब्जेक्ट को काटें. इसके बाद, डिसप्ले साइज़ के हिसाब से उनका साइज़ बदलें.

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

एक समान बिटमैप फ़ॉन्ट ऊंचाई का इस्तेमाल करें

BitmapFont का इस्तेमाल करते समय, किसी वर्ण की सभी इमेज की ऊंचाई एक जैसी होनी चाहिए. इसी तरह, शब्दों के लिए सभी इमेज की ऊंचाई एक जैसी होनी चाहिए.

ऐनिमेशन में एक जैसे फ़्रेम साइज़ का इस्तेमाल करना

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

इस तकनीक से, बॉउंडिंग बॉक्स का साइज़ कम हो जाता है. सिस्टम, ऐनिमेशन के लिए इस बॉक्स का हिसाब लगाता है.

डुप्लीकेट इमेज हटाना

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

चाप का इस्तेमाल करके प्रगति दिखाएं

एक मिनट या एक घंटे बाद पूरा होने वाले प्रोग्रेस बार को एम्युलेट करने के लिए, 60 अलग-अलग इमेज का इस्तेमाल न करें. इसके बजाय, एक ऐसा Arc ऑब्जेक्ट बनाएं जिसमें उसकी लंबाई को कंट्रोल करने वाला एक्सप्रेशन हो, जैसा कि इस कोड स्निपेट में दिखाया गया है:

<PartDraw angle="0" width="400" height="400" name="ProgressBar"
          pivotX="0.5" pivotY="0.5 x="40" y="40">
    <Arc centerX="200" centerY="200" width="400" height="400"
         startAngle="0" endAngle="360">
        <!-- Completes a "progress loop" every minute. -->
        <Transform target="endAngle"
                   value="0 + (clamp([SECOND], 0, 60) - 0) * 6" />
        <Stroke cap="ROUND" color="#123456" thickness="10" />
    </Arc>
</PartDraw>

रेट्रो डिजिटल वॉच स्टाइल का लुक पाने के लिए, Stroke ऑब्जेक्ट के लिए डैश प्रॉपर्टी या आधी पारदर्शी मास्क इमेज ओवरले का इस्तेमाल करें. इससे, बिना किसी रुकावट वाली लाइन नहीं दिखेगी.

सोर्स फ़ाइल के आखिर में, स्मार्टवॉच की हैंड्स और Android घड़ी के विजेट जोड़ें

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

स्मार्टवॉच की होम स्क्रीन पर मेमोरी के इस्तेमाल का आकलन करना

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