Tối ưu hoá mức sử dụng bộ nhớ cho mặt đồng hồ

Wear OS cải thiện thời lượng pin bằng cách theo dõi mức sử dụng bộ nhớ. Theo Nguyên tắc về chất lượng của ứng dụng Wear OS, các mặt đồng hồ sử dụng Định dạng mặt đồng hồ sẽ có giới hạn về bộ nhớ:

  • Chế độ môi trường xung quanh: Sử dụng bộ nhớ tối đa 10 MB.
  • Chế độ tương tác: Sử dụng bộ nhớ tối đa 100 MB.

Tính toán mức sử dụng bộ nhớ

Để tính mức sử dụng bộ nhớ cho một hình ảnh hoặc phông chữ bitmap trong mặt đồng hồ bằng Định dạng mặt đồng hồ, hệ thống sẽ thực hiện những việc sau:

  1. Giải nén hình ảnh hoặc phông chữ.
  2. Kiểm tra xem các tính năng tối ưu hoá sau đây có áp dụng cho bạn hay không:
    • Đổi kích thước cho vừa với màn hình hơn
    • Cắt các pixel trong suốt
    • Lọc giảm xuống RGB565 mà không làm giảm độ trung thực

Dựa trên hộp giới hạn thu được, kích thước được tính như sau:

  • Đối với hình ảnh và phông chữ sử dụng RGBA8888: 4 x chiều rộng x chiều cao
  • Đối với hình ảnh và phông chữ sử dụng RGB565: 2 x chiều rộng x chiều cao
  • Đối với hình ảnh và phông chữ sử dụng cấu hình bitmap ALPHA_8: chiều rộng x chiều cao

Chế độ tương tác

Để tính mức sử dụng bộ nhớ cho chế độ tương tác, hệ thống sẽ cộng các giá trị sau:

  1. Kích thước chưa xử lý của mọi phông chữ vectơ
  2. Mức sử dụng ước tính của phông chữ mặc định của hệ thống
  3. Tổng kích thước của hình ảnh và phông chữ bitmap sau khi cắt, đổi kích thước và định dạng lại

Cấu hình

Đối với mặt đồng hồ có cấu hình, hệ thống sẽ cố gắng tính tổng kích thước của tài nguyên mặt đồng hồ trên nhiều cấu hình. Nếu số lượng tổ hợp quá lớn, hệ thống có thể đánh giá quá cao số lượng tài nguyên được sử dụng đồng thời.

Chế độ môi trường xung quanh và lớp

Hệ thống giả định chế độ môi trường xung quanh sử dụng tối đa 3 lớp toàn màn hình, trong đó 2 lớp là tĩnh. Các lớp bao gồm:

  1. Nền mặt đồng hồ. Hệ thống coi đây là một hình ảnh, bất kể phông nền bao gồm bao nhiêu hình ảnh.
  2. Các bộ phận chuyển động như kim đồng hồ, màn hình kỹ thuật số hoặc phần tử động.
  3. Các phần tử còn lại trong tệp XML nguồn.

Phông chữ bitmap lớn thường sử dụng nhiều bộ nhớ nhất ở chế độ môi trường xung quanh.

Các phương pháp giảm mức sử dụng bộ nhớ

Hãy sử dụng các tính năng tối ưu hoá sau để giảm mức sử dụng bộ nhớ.

Cắt và đổi kích thước phông chữ bitmap

Cắt hình ảnh và các đối tượng BitmapFont cho phù hợp với kích thước hiển thị.

Wear OS vẽ mặt đồng hồ với tất cả hình ảnh được giải nén. Một hình ảnh toàn màn hình gần như trống có thể chiếm 3 KB trên ổ đĩa, nhưng 750 KB trở lên trên màn hình 450 pixel x 450 pixel.

Sử dụng chiều cao nhất quán cho phông chữ bitmap

Khi sử dụng BitmapFont, hãy đảm bảo tất cả hình ảnh cho một ký tự đều có cùng chiều cao. Tương tự, hãy đảm bảo tất cả hình ảnh cho các từ đều có cùng chiều cao.

Sử dụng kích thước khung nhất quán trong ảnh động

Thay vì di chuyển hình ảnh trên mặt đồng hồ, hãy cập nhật các phần tử trong hình ảnh và giữ cố định vị trí hộp giới hạn. Ví dụ: để tạo ảnh động cho một vòng tròn trên mặt đồng hồ, hãy thay đổi màu của vòng tròn thay vì cuộn vòng tròn đó.

Kỹ thuật này thu nhỏ kích thước của hộp giới hạn được tính toán của ảnh động.

Loại bỏ hình ảnh trùng lặp

Để hiển thị một hình ảnh nhiều lần, chỉ đưa vào một tài nguyên hình ảnh và tham chiếu tài nguyên đó nhiều lần.

Hiện tiến trình bằng các vòng cung

Để mô phỏng một thanh tiến trình chạy xong sau 1 phút hoặc 1 giờ, đừng sử dụng 60 hình ảnh. Sử dụng đối tượng Arc có biểu thức kiểm soát độ dài của đối tượng đó, như minh hoạ ở đây:

<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>

Để hiện một đường không liên tục, chẳng hạn như để có giao diện kiểu đồng hồ kỹ thuật số theo phong cách xưa cũ, hãy sử dụng thuộc tính dấu gạch ngang cho đối tượng Stroke hoặc lớp ảnh dạng mặt nạ nửa trong suốt.

Đặt kim đồng hồ và chức năng ở cuối tệp nguồn

Các nút XML được vẽ theo thứ tự liệt kê trong XML nguồn. Bằng cách đặt kim đồng hồ và các chức năng ở cuối, bạn cho phép hệ thống loại bỏ toàn bộ lớp khỏi quá trình tính toán bộ nhớ ở chế độ môi trường xung quanh.

Đánh giá mức sử dụng bộ nhớ của mặt đồng hồ

Để đo mức sử dụng bộ nhớ của mặt đồng hồ, hãy sử dụng công cụ đánh giá mức sử dụng bộ nhớ có trong kho lưu trữ watchface trên GitHub.

  • Lưu ý: văn bản có đường liên kết sẽ hiện khi JavaScript tắt
  • Arc
  • Dòng
  • Rectangle