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

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

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

मेमोरी के इस्तेमाल का हिसाब लगाना

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

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

बाउंडिंग बॉक्स के आधार पर, साइज़ का हिसाब इस तरह लगाया जाता है:

  • RGBA8888 का इस्तेमाल करने वाली इमेज और फ़ॉन्ट के लिए: 4 x चौड़ाई x ऊंचाई
  • RGB565 का इस्तेमाल करने वाली इमेज और फ़ॉन्ट के लिए: 2 x चौड़ाई x लंबाई
  • ALPHA_8 बिटमैप कॉन्फ़िगरेशन का इस्तेमाल करने वाली इमेज और फ़ॉन्ट के लिए: चौड़ाई x लंबाई

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

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

  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="25" y="25">
    <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="#654456" thickness="10" />
    </Arc>
</PartDraw>

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

सोर्स फ़ाइल के आखिर में, घड़ी की सुइयां और कॉम्प्लिकेशन रखें

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

वॉच फ़ेस के लिए मेमोरी के इस्तेमाल का आकलन करना

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

  • ध्यान दें: JavaScript बंद होने पर लिंक का टेक्स्ट दिखता है
  • Arc
  • लाइन
  • आयत