Cải thiện hiệu suất mặt đồng hồ bằng cách 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ạ đã tăng tốc phần cứng. Ngược lại, các mặt đồng hồ thường được triển khai bằng cách sử dụng canvas, do đó, các mặt đồng hồ không tự động tăng tốc phần cứng.

Tại sao nên sử dụng canvas đã 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, ảnh động và hiệu ứng chuyển tiếp sẽ trông mượt mà hơn. Đây rõ ràng là những lợi ích đối với 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 đề cập trong phần Đo lường hiệu suất giao diện người dùng khi sử dụng canvas được tăng tốc phần cứng.

Yêu cầu tăng tốc phần cứng cho mặt đồng hồ

Tạo CanvasRenderer và đặt canvasType thành CanvasType.HARDWARE để yêu cầu tăng tốc phần cứng cho mặt đồng hồ.

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 hiện 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 dành cho nhà phát triển hoặc adb.

Kiểm tra bằng cách sử dụng tuỳ chọn dành cho nhà phát triển

Để kiểm tra xem mặt đồng hồ của bạn có đang 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 dành cho nhà phát triển, 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 dành 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ị lượng thời gian dành cho mỗi giai đoạn kết xuất GPU cho bề mặt đó.

  3. Trên thiết bị, hãy quay lại mặt đồng hồ của bạn.

  4. Nếu mặt đồng hồ đang sử dụng canvas 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

Để kiểm tra xem mặt đồng hồ của bạn có sử dụng tính năng tăng tốc phần cứng bằng adb 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ó đang sử 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 bạn thấy dữ liệu khung này trong kết quả của mình, thì mặt đồng hồ của bạn đang sử dụng canvas tăng tốc. Nếu không thì số liệu cho Total frames rendered (và các số dữ liệu khung khác trong báo cáo) sẽ bằng 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 để xác minh 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 lâu, 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ể sẽ trở nên tệ hơn nếu mặt đồng hồ cố gắng vẽ 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 để ảnh động chạy lâu trên mặt đồng hồ. Hướng dẫn này không dành riêng cho việc sử dụng tính năng tăng tốc phần cứng, nhưng vì việc sử dụng tính năng tăng tốc phần cứng sẽ làm tăng số lượng khung hình bạn có thể vẽ, nên điều quan trọng hơn là bạn phải tuân theo. Để biết thêm thông tin, hãy xem 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. 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 được 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ị Wearuld 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 các thiết bị cũ (không hỗ trợ tăng tốc phần cứng), hoặc thao tác vẽ không được hỗ trợ trên canvas 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ế.