Meningkatkan performa tampilan jam dengan akselerasi hardware

Aplikasi Wear OS yang menggunakan tampilan standar akan mendapatkan manfaat dari rendering grafis dengan akselerasi hardware otomatis. Namun, tampilan jam biasanya diimplementasikan menggunakan kanvas, sehingga tidak otomatis mendapatkan akselerasi hardware.

Mengapa harus menggunakan kanvas dengan akselerasi hardware untuk tampilan jam Anda?

Pada umumnya, tampilan jam merender dengan kecepatan frame yang lebih tinggi saat menggunakan kanvas dengan akselerasi hardware. Pada kecepatan frame yang lebih tinggi, animasi dan transisi terlihat lebih halus sehingga memberikan pengalaman pengguna yang lebih baik.

Jika menggunakan kanvas dengan akselerasi hardware, Anda juga dapat mengakses lebih banyak data performa UI tentang tampilan jam. Misalnya, Anda hanya dapat mengakses informasi frame mendetail yang dideskripsikan dalam Mengukur performa UI saat Anda menggunakan kanvas dengan akselerasi hardware.

Apakah tampilan jam saya menggunakan akselerasi hardware?

Anda dapat memeriksa apakah tampilan jam menggunakan akselerasi hardware dengan bantuan opsi developer atau adb.

Memeriksa menggunakan opsi developer

Untuk menggunakan opsi developer guna memeriksa apakah tampilan jam Anda menggunakan akselerasi hardware, ikuti langkah-langkah berikut:

  1. Di perangkat Wear OS, buka Setelan > Opsi developer.
  2. Aktifkan profiling Debug GPU.

    Opsi ini menggambar overlay di atas platform yang terlihat, satu per platform, untuk menampilkan jumlah waktu yang dihabiskan di setiap tahap rendering GPU untuk platform tersebut.

  3. Di perangkat, buka kembali tampilan jam.

  4. Jika tampilan jam menggunakan kanvas dengan akselerasi hardware, Anda akan melihat panel baru yang bergerak dari kanan ke kiri untuk setiap frame tampilan jam yang dirender.

Memeriksa menggunakan adb

Untuk menggunakan adb guna memeriksa apakah tampilan jam Anda menggunakan akselerasi hardware, ikuti langkah-langkah berikut:

  1. Di perangkat Wear OS, ubah tampilan jam menjadi tampilan jam yang ingin Anda uji.
  2. Biarkan tampilan jam berjalan selama beberapa detik dalam mode interaktif.
  3. Jalankan perintah adb berikut untuk memeriksa apakah tampilan jam Anda menggunakan akselerasi hardware:

    adb shell dumpsys gfxinfo [package-name]

Setelah menjalankan perintah, Anda akan mendapatkan output yang mirip dengan contoh berikut:

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

...

Dalam contoh output ini, perhatikan baris yang bertuliskan Total frames rendered. Umumnya, jika output Anda menampilkan total frame yang dirender lebih besar dari 0, tampilan jam akan menggunakan kanvas yang diakselerasi. Jika tidak, total frame yang dirender dan data frame lainnya dalam laporan biasanya 0.

Namun, karena gfxinfo adalah output untuk paket lengkap aplikasi Anda, Anda mungkin melihat beberapa informasi waktu render frame dari sesuatu selain kanvas yang diakselerasi hardware, seperti Activity yang digunakan aplikasi Anda untuk layar konfigurasi. Untuk mengetahui perbedaannya, pastikan tampilan jam Anda adalah satu-satunya platform yang terlihat, lalu jalankan kembali perintah adb shell dumpsys gfxinfo untuk memastikan apakah nilai untuk Total frames rendered bertambah.

Praktik terbaik

Ikuti praktik terbaik berikut untuk memastikan pengalaman terbaik bagi pengguna Anda.

Memaksimalkan masa pakai baterai

Jika tampilan jam Anda memiliki animasi yang berjalan lama, penggunaan akselerasi hardware dapat mengurangi masa pakai baterai perangkat secara signifikan. Masalah ini dapat menjadi lebih buruk jika tampilan jam mencoba menggambar di setiap frame. Agar tidak berdampak negatif kepada pengguna, jangan gunakan animasi yang berjalan lama di tampilan jam. Panduan ini tidak hanya untuk penggunaan akselerasi hardware. Namun, panduan ini penting untuk diikuti karena penggunaan akselerasi hardware meningkatkan jumlah frame yang dapat Anda gambar. Untuk mengetahui informasi selengkapnya, lihat Praktik terbaik untuk animasi.

Menggunakan operasi gambar yang didukung

Beberapa operasi gambar tidak didukung saat menggunakan akselerasi hardware. Untuk informasi tentang apa yang didukung, lihat Akselerasi hardware. Jika memiliki jalur kode kecil yang menggunakan operasi yang tidak didukung, Anda dapat membuat kanvas yang didukung bitmap, lalu menggambar bitmap tersebut di kanvas tampilan jam menggunakan canvas.drawBitmap():

Mempertahankan kompatibilitas saat menggunakan akselerasi hardware

Akselerasi hardware tersedia di perangkat Wear OS yang menjalankan Android 9 (API level 28) atau yang lebih tinggi. Jika Anda ingin menghindari operasi gambar tertentu pada perangkat lama, di mana akselerasi hardware tidak tersedia, atau operasi gambar yang tidak didukung pada kanvas dengan akselerasi hardware, Anda dapat memeriksa Canvas.isHardwareAccelerated(), lalu menyediakan fungsi alternatif.