Để cung cấp thời lượng pin tốt nhất có thể cho thiết bị Wear OS, hệ thống sẽ thực hiện tính toán 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ề dung lượng bộ nhớ có thể sử dụng, tuỳ thuộc vào trạng thái hiện tại của đồng hồ:
- Ở chế độ môi trường xung quanh, mặt đồng hồ không được sử dụng quá 10 MB bộ nhớ.
- Ở chế độ tương tác, mặt đồng hồ không được sử dụng quá 100 MB bộ nhớ.
Hệ thống tính mức sử dụng bộ nhớ của mặt đồng hồ
Để tính toán kích thước mà một hình ảnh hoặc phông chữ bitmap chiếm trong mặt đồng hồ sử dụng Định dạng mặt đồng hồ, hệ thống sẽ hoàn tất các bước sau:
- Giải nén hình ảnh hoặc phông chữ bitmap.
- Kiểm tra hình ảnh hoặc phông chữ bitmap để xem liệu có thể tối ưu hoá hình ảnh hoặc phông chữ đó theo một trong các cách sau hay không:
- Đã đổi kích thước để phù hợp hơn với kích thước hiển thị.
- Đã cắt để xóa các pixel hoàn toàn trong suốt.
- Giảm mẫu xuống RGB565, nếu có thể thực hiện việc này mà không làm giảm độ trung thực.
Dựa trên hộp giới hạn thu được, hệ thống sẽ tính toán kích thước của phông chữ bitmap hoặc hình ảnh, tính bằng byte, theo một trong những cách sau:
- Đối với hình ảnh và phông chữ sử dụng RGBA8888: \( 4 \times width \times height \)
- Đối với hình ảnh và phông chữ sử dụng RGB565: \( 2 \times width \times height \)
- Đối với hình ảnh và phông chữ sử dụng cấu hình bitmap ALPHA_8: \( width \times height \)
Chế độ tương tác
Khi tính mức sử dụng bộ nhớ cho chế độ tương tác, hệ thống sẽ tính tổ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 bất kỳ thao tác cắt, đổi kích thước hoặc định dạng lại nào.
Cấu hình
Đối với các mặt đồng hồ chứa 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 được dùng trong nhiều cấu hình. Đôi khi, khi có rất nhiều tổ hợp, hệ thống sẽ ước tính cao hơn một chút số lượng tài nguyên được sử dụng đồng thời trên nhiều cấu hình.
Chế độ môi trường xung quanh và lớp
Đối với chế độ môi trường xung quanh, hệ thống giả định rằng đồng hồ được kết xuất bằng tối đa ba lớp toàn màn hình, trong đó hai lớp hoàn toàn tĩnh:
- Mọi thứ bên dưới các phần tử đồng hồ. Hầu hết "phần thân" của mặt đồng hồ được kết hợp vào lớp này. Không quan trọng là có bao nhiêu hình ảnh được sử dụng để vẽ lớp này; hệ thống sẽ tính lớp này là một hình ảnh toàn màn hình.
- Mọi kim đồng hồ, màn hình kỹ thuật số hoặc chức năng có liên kết nền tảng được kết xuất động.
- Tất cả các phần tử được liệt kê sau kim đồng hồ và chức năng trong tệp XML nguồn.
Thông thường, hầu hết mức sử dụng bộ nhớ ở chế độ môi trường xung quanh đều đến từ phông chữ bitmap, đặc biệt là phông chữ lớn.
Các phương pháp giảm mức sử dụng bộ nhớ
Bằng cách làm theo các đề xuất trong phần này, bạn có nhiều khả năng tạo được mặt đồng hồ có mức sử dụng bộ nhớ tuân thủ các giới hạn này.
Cắt và đổi kích thước phông chữ bitmap
Cắt hình ảnh và các đối tượng BitmapFont
, sau đó đổi kích thước cho phù hợp với kích thước hiển thị.
Khi Wear OS vẽ một mặt đồng hồ, mọi hình ảnh đều sẽ đượ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 nếu hình ảnh đó hiển thị trên màn hình 450 pixel x 450 pixel, hệ thống sẽ giải nén hình ảnh đó, tăng kích thước của hình ảnh đó trong bộ nhớ lên đến 750 KB hoặc lớn hơn.
Sử dụng chiều cao nhất quán cho phông chữ bitmap
Khi sử dụng BitmapFont
, mọi hình ảnh cho một ký tự phải có cùng chiều cao. Tương tự, mọi hình ảnh cho các từ phải 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ữ nguyên hộp giới hạn của hình ảnh đó ở cùng vị trí tương ứng với mặt đồng hồ. Ví dụ: nếu bạn muốn tạo ảnh động cho một vòng tròn trên mặt đồng hồ, hãy cân nhắc việc thay đổi màu của một vòng tròn thay vì lăn vòng tròn đó trên mặt đồng hồ.
Kỹ thuật này làm giảm kích thước của hộp giới hạn mà hệ thống tính toán cho ảnh động.
Loại bỏ hình ảnh trùng lặp
Nếu mặt đồng hồ hiện nhiều bản sao của cùng một hình ảnh, thì bạn chỉ cần đưa một bản sao của hình ảnh đó vào thư mục tài nguyên và tham chiếu hình ảnh đó 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 sau 1 giờ, đừng sử dụng 60 hình ảnh riêng biệt. Thay vào đó, hãy tạo một đối tượng Arc
chứa một biểu thức kiểm soát độ dài của đối tượng đó, như minh hoạ trong đoạn mã sau:
<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 tệp XML nguồn. Bằng cách đặt kim đồng hồ và các chức năng vào cuối tệp, hệ thống sẽ 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.