Mengoptimalkan tampilan jam

Tampilan jam Wear OS berjalan terus-menerus sehingga harus menggunakan daya secara efisien.

Optimalkan performa tampilan jam sebanyak mungkin. Halaman ini memberikan praktik terbaik untuk keseluruhan pengoptimalan tampilan jam serta praktik terbaik yang ditargetkan untuk animasi dan gambar.

Pengoptimalan dasar

Bagian ini berisi praktik terbaik untuk meningkatkan efisiensi tampilan jam secara keseluruhan.

Kecerahan dan warna tampilan jam

Penggunaan warna gelap pada tampilan jam akan mengurangi daya dari smartwatch pengguna. Berikut adalah beberapa rekomendasi untuk menyetel latar belakang tampilan jam, untuk mengoptimalkan penggunaan baterai tampilan jam:

  • Warna: Jika memungkinkan, gunakan latar belakang hitam.
  • Kecerahan: jika latar belakang hitam tidak dimungkinkan, pertahankan kecerahan warna latar belakang pada atau di bawah 25% pada hue, saturasi, nilai (HSV) atau hue, skala saturasi, kecerahan (HSB). Misalnya, jika Anda menggunakan class Color untuk menetapkan warna latar belakang yang ditentukan dengan skala HSV, gunakan setelan nilai 25 atau yang lebih rendah, yang mengontrol kecerahan.

Menggunakan kemampuan dinamis untuk berinteraksi dengan ponsel

Jika tampilan jam memerlukan operasi untuk berjalan di ponsel, jalankan kode hanya saat tampilan jam aktif. Metode yang direkomendasikan untuk membuat aplikasi di ponsel mengetahui bahwa tampilan jam yang terkait sedang aktif adalah CapabilityClient API.

Memantau konsumsi daya

Aplikasi pendamping Wear OS memungkinkan developer dan pengguna melihat banyaknya daya baterai yang dipakai oleh berbagai proses di perangkat wearable. Untuk melihatnya, buka Setelan > Baterai smartwatch.

Mendaftarkan tampilan jam yang peka enkripsi

Android 7.0 dan yang lebih baru menyertakan dukungan untuk enkripsi berbasis file dan memungkinkan aplikasi yang peka enkripsi dijalankan sebelum pengguna memberikan kode sandi dekripsi saat booting. Hal ini dapat mengurangi durasi transisi dari animasi booting ke tampilan jam hingga 30 detik.

Untuk mengaktifkan booting yang lebih cepat, tambahkan android:directBootAware="true" ke manifes tampilan jam.

Catatan: Gunakan fitur ini dengan tampilan jam yang tidak menggunakan penyimpanan yang dienkripsi dengan kredensial.

Praktik terbaik untuk animasi

Praktik terbaik di bagian ini membantu mengurangi pemakaian daya yang terkait dengan animasi.

Mengurangi frekuensi gambar animasi

Animasi sering memerlukan banyak komputasi dan memakai banyak daya. Sebagian besar animasi terlihat lancar pada 30 frame per detik, sebaiknya Anda tidak menjalankan animasi dengan kecepatan frame yang lebih tinggi. Sebagai gantinya, Anda dapat menggunakan kecepatan frame dinamis. Untuk mengetahui informasi selengkapnya, lihat Contoh Tampilan Jam Kanvas.

Mengizinkan CPU tidur di antara animasi

Untuk memaksimalkan masa pakai baterai, gunakan animasi seperlunya. Bahkan titik dua yang berkedip akan membangunkan CPU pada setiap kedipannya.

Animasi dan perubahan kecil pada konten tampilan jam akan mengaktifkan CPU. Biarkan CPU tidur di antara animasi dengan, misalnya, menggunakan animasi singkat setiap detik dalam mode interaktif lalu membiarkan CPU tidur hingga detik berikutnya. Membiarkan CPU sering tidur, meskipun sebentar, dapat mengurangi pemakaian daya secara signifikan.

Praktik terbaik untuk gambar

Praktik terbaik di bagian ini membantu mengurangi pemakaian daya yang terkait dengan gambar.

Mengurangi ukuran aset bitmap

Banyak tampilan jam yang terdiri dari gambar latar dan aset visual lain yang diubah dan ditempatkan di atas gambar latar, seperti jarum jam dan elemen lainnya yang bergerak sepanjang waktu. Makin besar aset visual Anda, makin banyak komputasi yang diperlukan untuk mengubahnya. Biasanya, elemen visual ini dirotasikan (dan terkadang diskalakan) di dalam metode Render.CanvasRenderer.render() setiap kali sistem menggambar ulang tampilan jam, seperti yang dijelaskan dalam Menggambar tampilan jam.

Gambar 1. Pangkas jarum jam untuk menghapus piksel tambahan.

Mengurangi ukuran aset bitmap akan meningkatkan performa animasi dan menghemat daya. Ikuti tips berikut untuk meningkatkan performa tampilan jam:

  • Jangan gunakan elemen visual yang lebih besar dari kebutuhan Anda.
  • Hapus piksel transparan tambahan di sekitar tepi.

Misalnya, ukuran gambar jarum jam di sebelah kiri pada gambar 1 dapat dikurangi 97% dengan menghapus piksel transparan tambahan, seperti yang ditampilkan di sebelah kanan gambar.

Menggabungkan aset bitmap

Jika Anda memiliki bitmap yang sering digambar bersama, sebaiknya gabungkan ke dalam satu aset visual. Contohnya, sering kali Anda dapat menggabungkan gambar latar dalam mode interaktif dengan tanda centang, sehingga Anda tidak perlu menggambar dua bitmap layar penuh setiap kali sistem menggambar ulang tampilan jam.

Menonaktifkan anti-aliasing saat menggambar bitmap yang diskalakan

Saat menggambar bitmap yang diskalakan pada objek Canvas menggunakan metode Canvas.drawBitmap(), Anda dapat menyediakan instance Paint untuk mengonfigurasi beberapa opsi. Untuk meningkatkan performa, nonaktifkan anti-aliasing menggunakan metode setAntiAlias(), karena opsi ini tidak berpengaruh pada bitmap.

Gambar 2. Contoh pemfilteran bitmap dinonaktifkan (kiri) dan diaktifkan (kanan).

Menggunakan pemfilteran bitmap

Untuk aset bitmap yang Anda gambar di atas elemen lain, aktifkan pemfilteran bitmap pada instance Paint yang sama menggunakan metode setFilterBitmap(). Gambar 2 menunjukkan tampilan jarum jam yang diperbesar dengan dan tanpa pemfilteran bitmap.

Catatan: Saat mode standby aktif, nonaktifkan pemfilteran bitmap. Dalam mode standby bit rendah, sistem tidak dapat merender warna dalam gambar dengan andal agar pemfilteran bitmap berhasil diproses.

Memindahkan operasi besar di luar metode menggambar

Sistem memanggil metode Render.CanvasRenderer.render() setiap kali menggambar ulang tampilan jam Anda. Untuk meningkatkan performa, hanya sertakan operasi dalam metode ini yang benar-benar diperlukan untuk memperbarui tampilan jam.

Jika memungkinkan, hindari menjalankan operasi berikut dalam metode Render.CanvasRenderer.render():

  • Memuat gambar dan resource lainnya.
  • Mengubah ukuran gambar
  • Mengalokasikan objek
  • Komputasi yang hasilnya tidak berubah di antara frame

Untuk menganalisis performa tampilan jam, gunakan CPU Profiler. Secara khusus, pastikan waktu eksekusi untuk implementasi Render.CanvasRenderer.render() Anda tidak terlalu lama dan konsisten di seluruh pemanggilan. Untuk mengetahui informasi selengkapnya, lihat Memeriksa aktivitas CPU dengan CPU Profiler.

Aplikasi contoh tampilan jam menunjukkan praktik terbaik untuk mengonfigurasi tampilan jam.