بهینه‌سازی استفاده از حافظه برای صفحه ساعت

‫Wear OS با پیگیری استفاده از حافظه، عمر باتری را بهبود می‌بخشد. صفحه‌های ساعتی که از «قالب صفحه ساعت» استفاده می‌کنند، طبق دستورالعمل‌های کیفیت برنامه Wear OS، محدودیت حافظه دارند:

  • حالت محیطی: حداکثر استفاده از حافظه ۱۰ مگابایت.
  • حالت تعاملی: حداکثر استفاده از حافظه ۱۰۰ مگابایت.

محاسبه استفاده از حافظه

برای محاسبه استفاده از حافظه برای تصویر یا قلم بیت‌مپ در صفحه ساعت بااستفاده از قالب صفحه ساعت، سیستم این کارها را انجام می‌دهد:

  1. تصویر یا قلم را از حالت فشرده خارج کنید.
  2. بررسی کنید که آیا بهینه‌سازی‌های زیر اعمال می‌شوند:
    • درحال تغییر اندازه برای بهتر جا شدن در صفحه‌نمایش
    • درحال برش پیکسل‌های شفاف
    • نمونه‌برداری پایین به RGB565، بدون ازدست دادن وفاداری

براساس چارگوش محدودکننده حاصل، اندازه به‌صورت زیر محاسبه می‌شود:

  • برای تصاویر و قلم‌هایی که از RGBA8888 استفاده می‌کنند: ۴ × عرض × ارتفاع
  • برای تصاویر و قلم‌های استفاده‌کننده از RGB565: 2 x عرض x ارتفاع
  • برای تصاویر و قلم‌هایی که از پیکربندی بیت‌مپ ALPHA_8 استفاده می‌کنند: عرض × ارتفاع

حالت تعاملی

برای محاسبه مصرف حافظه در حالت تعاملی، سیستم مقادیر زیر را جمع می‌کند:

  1. اندازه پردازش‌نشده هر قلم برداری
  2. استفاده تخمینی از قلم پیش‌فرض سیستم
  3. اندازه کل تصاویر و قلم‌های بیت‌مپ پس‌از اعمال برش، تغییر اندازه، و قالب‌بندی مجدد

پیکربندی‌ها

برای صفحه‌های ساعت دارای پیکربندی‌ها، سیستم تلاش می‌کند اندازه کل منابع صفحه ساعت را در پیکربندی‌های مختلف محاسبه کند. اگر تعداد ترکیب‌ها خیلی زیاد باشد، سیستم ممکن است تعداد منابعی را که به‌طور هم‌زمان استفاده می‌شوند بیش‌از حد تخمین بزند.

حالت محیطی و لایه‌ها

سیستم فرض می‌کند که حالت محیطی از حداکثر سه لایه تمام‌صفحه استفاده می‌کند که دو لایه از آن‌ها ثابت هستند. لایه‌ها شامل موارد زیر است:

  1. پس‌زمینه صفحه ساعت. سیستم این را به‌عنوان یک تصویر درنظر می‌گیرد، صرف‌نظر از اینکه پس‌زمینه از چند تصویر تشکیل شده است.
  2. بخش‌های متحرک مانند دست‌ها، نمایشگرهای دیجیتال، یا عناصر پویا.
  3. عناصر باقی‌مانده از فایل XML منبع.

قلم‌های بیت‌مپ بزرگ اغلب بیشترین حافظه را در حالت محیطی استفاده می‌کنند.

روش‌های کاهش استفاده از حافظه

از بهینه‌سازی‌های زیر برای کاهش استفاده از حافظه استفاده کنید.

برش دادن و تغییر اندازه قلم‌های شطرنجی

تصاویر و BitmapFont اشیایتان را برش دهید تا با اندازه نمایش مطابقت داشته باشند.

‫Wear OS صفحه‌های ساعت را با همه تصاویر فشرده‌نشده رسم می‌کند. تصویر تمام‌صفحه که بیشتر آن خالی است ممکن است ۳ کیلوبایت در دیسک مصرف کند، اما ۷۵۰ کیلوبایت یا بیشتر در صفحه ۴۵۰ پیکسل × ۴۵۰ پیکسل مصرف می‌کند.

استفاده از ارتفاع‌های یکسان قلم بیت‌مپ

هنگام استفاده از BitmapFont، مطمئن شوید که همه تصاویر شخصیت ارتفاع یکسانی داشته باشند. به‌همین ترتیب، مطمئن شوید که همه تصاویر مربوط به کلمات ارتفاع یکسانی دارند.

از اندازه‌های قاب یکسان در پویانمایی‌ها استفاده کنید

به‌جای حرکت دادن تصویر در صفحه ساعت، عناصر تصویر را به‌روز کنید و موقعیت چارگوش محدودکننده را ثابت نگه دارید. برای مثال، برای پویانمایی دایره‌ای در صفحه ساعت، به‌جای چرخاندن آن، رنگش را تغییر دهید.

این تکنیک اندازه چارگوش محدودکننده محاسبه‌شده پویانمایی را کوچک می‌کند.

حذف تصاویر تکراری

برای نمایش چندباره تصویر، فقط یک منبع تصویر را اضافه کنید و چندین بار به آن ارجاع دهید.

نمایش پیشرفت بااستفاده از کمان‌ها

برای شبیه‌سازی نوار پیشرفت که پس‌از ۱ دقیقه یا ۱ ساعت تکمیل می‌شود، از ۶۰ تصویر استفاده نکنید. از یک شیء 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 یا رونهاد تصویر ماسک نیمه‌شفاف استفاده کنید.

قرار دادن عقربه‌های ساعت و عملکردهای اضافی در انتهای فایل منبع

گره‌های XML به ترتیبی که در XML منبع فهرست شده‌اند رسم می‌شوند. با قرار دادن عقربه‌های ساعت و کارافزارها در انتها، به سیستم امکان می‌دهید کل لایه را از محاسبات حافظه حالت محیطی حذف کند.

ارزیابی مصرف حافظه صفحه ساعت

برای اندازه‌گیری میزان استفاده از حافظه صفحه ساعت، از ابزار ارزیابی ردپای حافظه که در مخزن watchface در GitHub دردسترس است استفاده کنید.

  • توجه: نوشتار پیوند وقتی جاوا اسکریپت خاموش است نمایش داده می‌شود
  • Arc
  • خط
  • مستطیل