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ớ. Các mặt đồng hồ sử dụng Định dạng mặt đồng hồ có giới hạn về bộ nhớ, theo Nguyên tắc về chất lượng của ứng dụng Wear OS:
- Chế độ môi trường xung quanh: Mức sử dụng bộ nhớ tối đa là 10 MB.
- Chế độ tương tác: Mức sử dụng bộ nhớ tối đa là 100 MB.
Tính toán mức sử dụng bộ nhớ
Để tính toán 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ẽ làm như sau:
- Giải nén hình ảnh hoặc phông chữ.
- Kiểm tra xem bạn có thể áp dụng các biện pháp tối ưu hoá sau đây hay không:
- Đổi kích thước để vừa với màn hình hơn
- Cắt pixel trong suốt
- Giảm mẫu 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:
- Kích thước chưa xử lý của mọi phông chữ vectơ
- Mức sử dụng ước tính của phông chữ mặc định của hệ thống
- Tổng kích thước của hình ảnh và phông chữ bitmap sau khi áp dụng thao tác 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 toán tổng kích thước của các tài nguyên mặt đồng hồ trên nhiều cấu hình. Nếu số lượng tổ hợp rất lớn, hệ thống có thể ước tính quá mức số lượng tài nguyên được sử dụng đồng thời.
Chế độ môi trường xung quanh và các lớp
Hệ thống giả định rằng chế độ xung quanh sử dụng tối đa 3 lớp toàn màn hình, trong đó có 2 lớp tĩnh. Các lớp này bao gồm:
- Hình nền mặt đồng hồ. Hệ thống coi đây là một hình ảnh, bất kể hình nền bao gồm bao nhiêu hình ảnh.
- Các bộ phận chuyển động như bàn tay, màn hình kỹ thuật số hoặc các phần tử động.
- Các phần tử còn lại trong tệp XML nguồn.
Phông chữ bitmap lớn thường dùng nhiều bộ nhớ nhất ở chế độ xung quanh.
Các phương pháp giảm mức sử dụng bộ nhớ
Hãy sử dụng các phương pháp tối ưu hoá sau đây để 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 đã 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 nhân vậ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 hình 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ữ nguyên vị trí của 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ì xoay vòng tròn đó.
Kỹ thuật này giúp giảm 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, bạn chỉ cần thêm một tài nguyên hình ảnh và tham chiếu đến 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="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>
Để 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à các 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 các thành phần mặt đồng hồ và dữ liệu phức tạp ở 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ế độ 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.