Cải thiện hiệu suất của mặt đồng hồ bằng tính năng tăng tốc phần cứng

Các ứng dụng Wear OS sử dụng khung hiển thị chuẩn hưởng lợi từ việc kết xuất đồ hoạ được tự động tăng tốc phần cứng. Tuy nhiên, mặt đồng hồ thường được triển khai bằng cách sử dụng canvas. Do đó, chúng không tự động được tăng tốc phần cứng.

Tại sao nên sử dụng canvas được tăng tốc phần cứng cho mặt đồng hồ?

Trong hầu hết các trường hợp, mặt đồng hồ sẽ hiển thị ở tốc độ khung hình cao hơn khi sử dụng canvas được tăng tốc phần cứng. Ở tốc độ khung hình cao hơn, các ảnh động và hiệu ứng chuyển tiếp sẽ trông mượt mà hơn, giúp cải thiện trải nghiệm người dùng.

Khi sử dụng một canvas được tăng tốc phần cứng, bạn cũng có thể truy cập thêm dữ liệu về hiệu suất của giao diện người dùng liên quan đến mặt đồng hồ. Ví dụ: bạn chỉ có thể truy cập thông tin chi tiết về khung được mô tả trong phần Đo lường hiệu suất của giao diện người dùng khi sử dụng canvas được tăng tốc phần cứng.

Mặt đồng hồ của tôi có sử dụng tính năng tăng tốc phần cứng không?

Bạn có thể kiểm tra xem mặt đồng hồ của mình có dùng tính năng tăng tốc phần cứng hay không bằng cách sử dụng tuỳ chọn cho nhà phát triển hoặc adb.

Kiểm tra bằng tuỳ chọn cho nhà phát triển

Để sử dụng tuỳ chọn cho nhà phát triển nhằm kiểm tra xem mặt đồng hồ của bạn có dùng tính năng tăng tốc phần cứng hay không, hãy làm theo các bước sau:

  1. Trên thiết bị Wear OS, hãy chuyển đến phần Cài đặt > Tuỳ chọn cho nhà phát triển.
  2. Bật tính năng Gỡ lỗi phân tích GPU.

    Tuỳ chọn này vẽ một lớp phủ trên các bề mặt hiển thị (một lớp phủ trên mỗi bề mặt) để hiển thị khoảng thời gian dành cho mỗi giai đoạn kết xuất GPU của bề mặt đó.

  3. Trên thiết bị, hãy chuyển về mặt đồng hồ của bạn.

  4. Nếu mặt đồng hồ sử dụng canvas được tăng tốc phần cứng, bạn sẽ thấy một thanh mới di chuyển từ phải sang trái cho từng khung hình đã kết xuất của mặt đồng hồ.

Kiểm tra bằng adb

Để sử dụng adb nhằm kiểm tra xem mặt đồng hồ của bạn có dùng tính năng tăng tốc phần cứng hay không, hãy làm theo các bước sau:

  1. Trên thiết bị Wear OS, hãy thay đổi mặt đồng hồ thành mặt đồng hồ mà bạn muốn kiểm thử.
  2. Để mặt đồng hồ chạy trong vài giây ở chế độ tương tác.
  3. Chạy lệnh adb sau để kiểm tra xem mặt đồng hồ của bạn có dùng tính năng tăng tốc phần cứng hay không:

    adb shell dumpsys gfxinfo [package-name]

Sau khi chạy lệnh, bạn sẽ nhận được kết quả tương tự như ví dụ sau:

Applications Graphics Acceleration Info:
Uptime: 2239933 Realtime: 13568751

** Graphics info for pid 1100 [package-name] **

Stats since: 59875589194ns
Total frames rendered: 1213
Janky frames: 0 (0.00%)
50th percentile: 7ms
90th percentile: 18ms
95th percentile: 25ms
99th percentile: 150ms
Number Missed Vsync: 0
Number High input latency: 0
Number Slow UI thread: 0
Number Slow bitmap uploads: 0
Number Slow issue draw commands: 0
Number Frame deadline missed: 0

...

Trong kết quả mẫu này, hãy chú ý dòng có nội dung Total frames rendered. Nhìn chung, nếu kết quả của bạn hiển thị tổng số khung hình được kết xuất lớn hơn 0, thì tức là mặt đồng hồ có dùng canvas được tăng tốc. Nếu không, tổng số khung hình được kết xuất và các dữ liệu khác về khung hình trong báo cáo thường là 0.

Tuy nhiên, vì gfxinfo là kết quả cho gói đầy đủ của ứng dụng, nên bạn có thể thấy một số thông tin về thời gian kết xuất khung hình từ một tính năng khác với canvas được tăng tốc phần cứng, chẳng hạn như Activity mà ứng dụng dùng cho màn hình cấu hình. Để phân biệt, hãy đảm bảo rằng mặt đồng hồ là bề mặt duy nhất hiển thị, sau đó chạy lại lệnh adb shell dumpsys gfxinfo để kiểm tra xem giá trị của Total frames rendered có tăng hay không.

Các phương pháp hay nhất

Hãy làm theo các phương pháp hay nhất này để đảm bảo trải nghiệm tốt nhất có thể cho người dùng của bạn.

Tối đa hoá thời lượng pin

Nếu mặt đồng hồ có các ảnh động chạy trong thời gian dài, thì việc sử dụng tính năng tăng tốc phần cứng có thể làm giảm đáng kể thời lượng pin của thiết bị. Vấn đề này có thể trở nên tệ hơn nếu mặt đồng hồ cố gắng vẽ hình ảnh trong mọi khung hình. Để tránh gây ảnh hưởng tiêu cực đến người dùng, bạn không nên dùng các ảnh động chạy trong thời gian dài trên mặt đồng hồ. Đây không phải là hướng dẫn riêng về cách sử dụng tính năng tăng tốc phần cứng. Tuy nhiên, vì việc sử dụng tính năng này làm tăng số lượng khung hình bạn có thể vẽ, nên tốt nhất bạn nên tuân theo. Để biết thêm thông tin, hãy xem phần Các phương pháp hay nhất về ảnh động.

Sử dụng các thao tác vẽ được hỗ trợ

Một số thao tác vẽ không được hỗ trợ khi sử dụng tính năng tăng tốc phần cứng. Để biết thông tin về những tính năng được hỗ trợ, hãy xem bài viết Tăng tốc phần cứng. Nếu có đường dẫn mã nhỏ sử dụng thao tác không được hỗ trợ, bạn có thể tạo một canvas hỗ trợ bitmap, sau đó vẽ bitmap đó vào canvas của mặt đồng hồ bằng cách sử dụng canvas.drawBitmap().

Duy trì khả năng tương thích khi sử dụng tính năng tăng tốc phần cứng

Tính năng tăng tốc phần cứng có trên các thiết bị Wear OS chạy Android 9 (API cấp 28) trở lên. Nếu muốn tránh một thao tác vẽ cụ thể trên thiết bị cũ (không hỗ trợ tính năng tăng tốc phần cứng) hoặc một thao tác vẽ không được hỗ trợ trên canvas được tăng tốc phần cứng, bạn có thể xem Canvas.isHardwareAccelerated() rồi cung cấp chức năng thay thế.