Wear OS با ردیابی میزان استفاده از حافظه، عمر باتری را بهبود می بخشد. طبق دستورالعملهای کیفیت برنامه Wear OS، چهرههای ساعت با استفاده از فرمت Watch Face دارای محدودیتهای حافظه هستند:
- حالت محیطی: حداکثر استفاده از حافظه 10 مگابایت.
- حالت تعاملی: 100 مگابایت حداکثر استفاده از حافظه.
محاسبه میزان مصرف حافظه
برای محاسبه میزان مصرف حافظه برای یک تصویر یا فونت بیت مپ در صفحه ساعت با استفاده از فرمت Watch Face، سیستم به صورت زیر عمل می کند:
- تصویر یا فونت را از حالت فشرده خارج کنید.
- بررسی کنید که آیا بهینه سازی های زیر اعمال می شود:
- برای تناسب بهتر با صفحه نمایش، اندازه را تغییر دهید
- برش پیکسل های شفاف
- کاهش نمونه به RGB565 ، بدون از دست دادن وفاداری
بر اساس جعبه مرزی به دست آمده، اندازه به صورت زیر محاسبه می شود:
- برای تصاویر و فونت های با استفاده از RGBA8888 : 4 x عرض x ارتفاع
- برای تصاویر و فونت های با استفاده از RGB565: 2 x عرض x ارتفاع
- برای تصاویر و فونت هایی که از پیکربندی بیت مپ ALPHA_8 استفاده می کنند: عرض x ارتفاع
حالت تعاملی
برای محاسبه میزان مصرف حافظه برای حالت تعاملی، سیستم مقادیر زیر را جمع می کند:
- اندازه پردازش نشده هر فونت برداری
- استفاده تخمینی از فونت پیش فرض سیستم
- اندازه کل تصاویر و فونت های بیت مپ پس از برش، تغییر اندازه و فرمت مجدد اعمال می شود.
تنظیمات
برای صفحههای ساعت با پیکربندی ، سیستم تلاش میکند تا اندازه کل منابع صفحه ساعت را در پیکربندیهای مختلف محاسبه کند. اگر تعداد ترکیب ها بسیار زیاد باشد، سیستم ممکن است تعداد منابعی که به طور همزمان استفاده می شوند را بیش از حد تخمین بزند.
حالت محیطی و لایه ها
سیستم فرض میکند که حالت محیطی حداکثر از سه لایه تمام صفحه استفاده میکند که دو تای آنها ثابت هستند. لایه ها شامل:
- پس زمینه صفحه ساعت. این سیستم بدون توجه به اینکه پسزمینه شامل چند تصویر است، این را به عنوان یک تصویر در نظر میگیرد.
- قطعات متحرک مانند عقربه ها، نمایشگرهای دیجیتال یا عناصر پویا.
- عناصر باقی مانده از فایل XML منبع.
فونت های بزرگ بیت مپ اغلب از بیشترین حافظه در حالت محیطی استفاده می کنند.
روش های کاهش مصرف حافظه
برای کاهش مصرف حافظه از بهینه سازی های زیر استفاده کنید.
برش و تغییر اندازه فونت های بیت مپ
تصاویر و اشیاء BitmapFont
خود را برش دهید تا با اندازه نمایش مطابقت داشته باشد.
Wear OS صفحههای ساعت را با تمام تصاویر از حالت فشرده میکشد. یک تصویر تمام صفحه عمدتاً خالی ممکن است 3 کیلوبایت روی دیسک مصرف کند، اما 750 کیلوبایت یا بیشتر در صفحه نمایش 450 x 450 پیکسل.
از ارتفاع فونت بیت مپ ثابت استفاده کنید
هنگام استفاده از BitmapFont
، مطمئن شوید که تمام تصاویر یک کاراکتر دارای ارتفاع یکسان هستند. به همین ترتیب، مطمئن شوید که تمام تصاویر کلمات دارای ارتفاع یکسانی هستند.
از اندازه های ثابت فریم در انیمیشن ها استفاده کنید
به جای جابجایی تصویر روی صفحه ساعت، عناصر موجود در تصویر را بهروزرسانی کنید و موقعیت جعبه مرزی را ثابت نگه دارید. به عنوان مثال، برای متحرک کردن یک دایره در صفحه ساعت خود، به جای چرخاندن آن، رنگ آن را تغییر دهید.
این تکنیک اندازه کادر محاسباتی انیمیشن را کوچک می کند.
تصاویر تکراری
برای نمایش چندین بار یک تصویر، فقط یک منبع تصویر را وارد کنید و چندین بار به آن ارجاع دهید.
نمایش پیشرفت با استفاده از کمان
برای شبیه سازی یک نوار پیشرفت که بعد از 1 دقیقه یا 1 ساعت به پایان می رسد، از 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
یا یک پوشش تصویر ماسک نیمه شفاف استفاده کنید.
عقربه های ساعت و پیچیدگی ها را در انتهای فایل منبع قرار دهید
گره های XML به ترتیب فهرست شده در XML منبع رسم می شوند. با قرار دادن عقربههای ساعت و پیچیدگیها در پایان، سیستم را قادر میسازید تا کل لایه را از محاسبه حافظه حالت محیط حذف کند.
میزان استفاده از حافظه صفحه ساعت خود را ارزیابی کنید
برای اندازه گیری میزان مصرف حافظه از صفحه ساعت خود، از ابزار ارزیابی ردپای حافظه که در مخزن watchface
در GitHub موجود است، استفاده کنید.