Hemat daya dan baterai

Efisiensi daya sangat penting di Wear OS. Prinsip desain Wear OS berfokus secara signifikan pada penggunaan daya perangkat karena smartwatch memiliki faktor bentuk kecil, yang dimaksudkan untuk interaksi singkat.

Dibandingkan dengan perangkat seluler yang lebih besar, perangkat Wear OS memiliki baterai yang lebih kecil, sehingga pengurasan baterai lebih terasa. Selain itu, pengguna memerlukan lebih banyak upaya untuk mengisi daya perangkat Wear OS, dibandingkan dengan perangkat seluler. Meskipun pengguna dapat mengisi daya perangkat seluler mereka pada berbagai interval sepanjang hari, mereka harus melepaskan perangkat Wear OS dari tubuh sebelum mengisi daya perangkat.

Untuk meningkatkan efisiensi daya aplikasi Anda, ikuti praktik terbaik desain berikut:

  • Desain aplikasi Anda harus memanfaatkan faktor bentuk Wear OS dengan baik. Desain tersebut tidak boleh menyalin aplikasi seluler Anda secara langsung.
  • Gunakan aplikasi seluler yang ada untuk membantu kasus penggunaan tertentu. Misalnya, internet dan sinkronisasi di smartwatch mahal; pertimbangkan apakah perangkat seluler dapat melakukan tugas berat, dan perangkat Wear OS menerima perubahan data.
  • Desain kasus penggunaan Anda untuk interaksi yang lebih singkat.
  • Pertimbangkan peristiwa Wear OS mana yang Anda gunakan, dan seberapa sering peristiwa ini terjadi.
  • Jika memungkinkan, tunda pekerjaan aplikasi Anda hingga smartwatch diisi daya. Hal ini terutama berlaku untuk tugas yang menggunakan banyak data, seperti menyinkronkan data, dan mengatur database.

    Jika perangkat sedang diisi daya dan memiliki koneksi Wi-Fi, jadwalkan tugas untuk melakukan pramuat data, gambar, dan update yang mungkin ingin dilihat pengguna di aplikasi Anda.

Panduan daya ini membantu Anda memahami kapan dan bagaimana sistem menjalankan aplikasi Anda, serta cara membatasi runtime dan pengurasan baterai aplikasi Anda. Untuk mempelajari lebih lanjut cara mencapai tindakan tertentu—seperti memuat aplikasi atau men-scroll daftar—lihat panduan terkait performa, seperti panduan performa Compose di Wear OS.

Memantau penggunaan baterai dari waktu ke waktu

Untuk menganalisis statistik baterai perangkat Wear OS yang menjalankan aplikasi Anda, masukkan perintah berikut di jendela terminal pada mesin pengembangan Anda:

adb shell dumpsys batterystats

Library di GitHub menampilkan parser statistik baterai, yang dapat berguna untuk dijalankan bersama dengan perintah ini.

Peristiwa yang memengaruhi masa pakai baterai

Sebelum memikirkan aplikasi Anda secara khusus, sebaiknya pikirkan secara lebih umum tentang peristiwa yang menggunakan daya di perangkat Wear OS.

Tabel berikut menunjukkan efek relatif pada masa pakai baterai di beberapa peristiwa umum dalam aplikasi Wear OS. Pengurasan daya yang tepat bervariasi di antara perangkat.

Peristiwa Dampak pada masa pakai baterai Cara mengurangi dampak
Mengakses jaringan, termasuk LTE dan Wi-Fi Sangat tinggi Tunda akses jaringan yang tidak penting hingga perangkat diisi daya.
Mengaktifkan layar dan memulai mode interaktif Tinggi Jangan mendorong pengguna untuk terus mengaktifkan layar lebih lama dari yang diperlukan. Berikan pengalaman yang menggunakan mode selalu aktif, yang juga dikenal sebagai mode standby.
Mengakses sensor GPS Tinggi Jika memungkinkan, tunggu hingga pengguna meminta akses GPS.
Mempertahankan penggunaan CPU yang tinggi Tinggi Gunakan aliran menggunakan Jetpack Compose.
Mengakses sensor detak jantung Sedang Gunakan waktu aktif prosesor saat menerima callback dari Sensor API, seperti saat menggunakan Fitur Kesehatan di Wear OS.
Mengakses perangkat lain melalui Bluetooth Sedang Pertahankan sesi yang singkat.
Mempertahankan wakelock Sedang Kurangi pembuatan wakelock secara manual dan gunakan WorkManager.

Meminimalkan waktu layar aktif

Di aplikasi Wear OS, ikuti prinsip penggunaan layar berikut:

  • Kunci layar aktif: Hindari jika memungkinkan. Untuk menguji, nonaktifkan Layar selalu aktif di setelan sistem, dan amati apakah layar mati dalam periode waktu tunggu.
  • Animasi: Minimalkan animasi yang rumit, dan fokuslah pada transisi singkat untuk tampilan yang lebih profesional. Secara khusus, hindari animasi dan loop yang berjalan lama. Jika loop diperlukan, tambahkan jeda antara loop yang setidaknya selama animasi itu sendiri.
  • Waktu aktif dalam mode standby: Dukung selalu aktif jika diperlukan, seperti untuk kasus penggunaan kebugaran. Jika aplikasi Anda memerlukan mode selalu aktif, ikuti rekomendasi berikut untuk Mode standby.

Meminimalkan penggunaan CPU

Di aplikasi Wear OS, ikuti prinsip penggunaan CPU berikut:

  • Pertahankan penggunaan yang singkat.
  • Gabungkan operasi terkait, untuk memaksimalkan waktu proses aplikasi Anda tidak aktif.

Meminimalkan wakelock

Pada umumnya, hindari operasi apa pun yang mencegah aplikasi Anda tidur, seperti wakelock. Misalnya, di aplikasi kesehatan & kebugaran, latihan yang berjalan lama tidak memerlukan wakelock. Gunakan waktu aktif prosesor saat menerima callback dari Sensor API, seperti saat menggunakan Fitur Kesehatan di Wear OS.

Ada beberapa kasus yang tidak masalah untuk mendapatkan wakelock, seperti saat aplikasi Anda melakukan salah satu hal berikut:

  • Memutar media di latar belakang.
  • Menggunakan WorkManager atau JobScheduler. (Sistem mempertahankan wakelock atas nama Anda saat menjalankan tugas di latar belakang.)

Untuk melakukan debug kunci layar saat aktif secara lokal, gunakan Background Task Inspector Android Studio, pelacakan sistem, atau adb shell dumpsys batterystats untuk memeriksa setiap kejadian wakelock yang panjang, serta ringkasan jumlah total dan durasi wakelock yang dipertahankan. Bandingkan jumlah dan durasi wakelock yang dipertahankan aplikasi Anda dengan pola penggunaan interaktif aplikasi Anda:

  • Periksa wakelock yang tidak terduga.
  • Jika durasinya lebih lama dari yang diharapkan, pertimbangkan apakah pekerjaan tersebut diblokir pada beberapa dependensi, seperti ketersediaan jaringan.

Memeriksa cara aplikasi Anda menjadi tidak aktif

Pertimbangkan apa yang dilakukan aplikasi aktif saat peristiwa perangkat utama terjadi, seperti berikut:

  • Layar mati dan perangkat memasuki mode standby.
  • Aplikasi ditutup dengan geser.

Untuk menganalisis aktivitas aplikasi, gunakan alat yang ditampilkan di bagian berikut.

Power Profiler

Power Profiler dapat diakses di menu Android Studio dengan memilih View > Jendela Alat > Profiler:

  1. Periksa pelacakan sistem saat layar mati dan perangkat memasuki mode standby.
  2. Cari pekerjaan yang terus berlanjut, dan tingkat penggunaan CPU perangkat.

Perfetto

Perfetto memungkinkan Anda merekam aktivitas, lalu memeriksa aplikasi untuk melihat apakah ada thread yang melakukan pekerjaan saat layar mati, perangkat memasuki mode standby, atau pengguna menutup aktivitas aplikasi Anda.

Tentukan peristiwa kustom untuk menandai peristiwa penting aplikasi Anda, termasuk peristiwa khusus domain. Untuk aplikasi media, hal ini akan mencakup tugas seperti mengambil playlist, mendownload item media tertentu, memulai pemutaran, dan menghentikan pemutaran. Dengan menentukan peristiwa ini, Anda dapat melihatnya di Perfetto dan membandingkan waktunya dengan penggunaan CPU dan daya aplikasi Anda.

Anda juga dapat menggunakan Android CLI untuk menginstal android-profiler keahlian (android skills add android-profiler), yang memungkinkan agen AI merekam pelacakan sistem Perfetto dari command line dan menganalisis rel daya, penguncian layar saat aktif, dan status penangguhan perangkat.

Menganalisis tugas terjadwal aplikasi Anda

Tugas terjadwal, menggunakan WorkManager, memungkinkan Anda melakukan pekerjaan latar belakang di aplikasi Anda. Meskipun beberapa pekerjaan latar belakang harus berkala, jangan jalankan tugas terlalu sering atau dalam durasi yang lama, karena hal ini dapat menguras baterai perangkat.

Gunakan Background Task Inspector Android Studio (View > Jendela Alat > App Inspection) atau jalankan adb shell dumpsys jobscheduler dan adb shell dumpsys batterystats untuk memeriksa eksekusi tugas dan pekerja terjadwal. Periksa frekuensi eksekusi dan total durasi:

  • Jika tugas berjalan sangat sering, pertimbangkan untuk mengurangi frekuensi ini.
  • Pastikan total waktu eksekusi sesuai dengan yang Anda harapkan, dan tidak jauh lebih lama.

Anda juga dapat merekam pelacakan sistem untuk menghubungkan eksekusi tugas dengan aktivitas aplikasi Anda di linimasa. Pertimbangkan hal berikut:

  • Untuk aplikasi Anda, durasi eksekusi harus masuk akal.
  • Pertimbangkan apakah tugas terjadi saat aplikasi Anda berjalan, atau apakah tugas tersebut mewakili pekerjaan latar belakang berkala.

Sensor

Perangkat Wear OS memiliki banyak sensor yang berbeda, seperti GPS. Pada umumnya, gunakan Fitur Kesehatan di Wear OS, bukan berinteraksi langsung dengan SensorManager. Dalam banyak kasus, Fitur Kesehatan secara cerdas menggabungkan data untuk meningkatkan performa baterai.

Untuk menganalisis penggunaan sensor di aplikasi Anda, jalankan perintah berikut di jendela terminal pada mesin pengembangan Anda:

adb shell dumpsys sensorservice

Hasil perintah ini menunjukkan hal berikut:

  • Pendaftaran sensor saat ini dan sebelumnya.
  • Konfigurasi sensor, termasuk penggabungan jika ditetapkan.
  • Data yang baru-baru ini diambil sampelnya.

Menguji pembatalan pendaftaran dari sensor

Untuk memeriksa apakah aplikasi Anda berhenti mengambil data sensor seperti yang diharapkan, uji skenario berikut:

  1. Tutup aplikasi Anda dengan geser.
  2. Ketuk layar dengan telapak tangan Anda. Tindakan ini akan mematikan layar atau menempatkan layar dalam mode standby.

Gunakan perintah ADB dari bagian sebelumnya untuk memeriksa apakah sensor ditampilkan dengan benar sebagai tidak terdaftar.

Lapisan Data

Saat menggunakan Data Layer API, setiap transmisi menggunakan daya. Secara khusus, jika Anda menggunakan API ini untuk mengirim data, aplikasi Anda harus aktif untuk menerima data. Karena alasan ini, gunakan API ini secara konservatif.

Beberapa praktik terbaik tambahan untuk menggunakan Data Layer API mencakup hal berikut:

  • Tunggu hingga aplikasi Anda aktif sebelum menyiapkan pemroses menggunakan WearableListenerService.
  • Jangan gunakan Data Layer API untuk melakukan ping pada smartwatch secara berkala guna memeriksa apakah perangkat atau aplikasi pendamping tersedia. Dengan mengirim pesan berulang kali, aplikasi Anda mengaktifkan radio dan proses aplikasi jarak jauh, yang menguras baterai perangkat lebih dari yang diperlukan. Sebagai gantinya, gunakan CapabilityClient untuk mendeteksi ketersediaan dan kemampuan perangkat, atau hanya mengirim pesan saat status berubah.
  • Kirim perubahan status, bukan mengonfigurasi update cepat. Perubahan status ini memungkinkan perangkat Wear OS melakukan perhitungan data lokal, seperti saat sesi latihan dimulai.

    Hanya kirim perubahan status yang memperbarui UI Anda. Misalnya, jika layar aktivitas Anda hanya menampilkan "kilometer yang ditempuh" hingga satu tempat desimal, jangan kirim perubahan status ke Wear OS setiap kali pengguna bergerak satu meter ke depan.

Untuk menganalisis penggunaan Data Layer API di aplikasi Anda, jalankan perintah berikut di jendela terminal pada mesin pengembangan Anda:

adb shell dumpsys activity service WearableService

Hasil perintah ini mencakup hal berikut:

  • RpcService: Memungkinkan Anda melihat seberapa sering dan jalur mana yang dipanggil menggunakan MessageClient.
  • DataService: Memungkinkan Anda melihat seberapa sering item data ditetapkan menggunakan DataClient.

Aplikasi Kesehatan dan Kebugaran

Jika Anda mengelola aplikasi kesehatan dan kebugaran, gunakan Fitur Kesehatan untuk mengoptimalkan penggunaan sensor aplikasi Anda.

  • Untuk ExerciseClient, gunakan pelacakan sistem, Perfetto, atau adb shell dumpsys batterystats untuk memverifikasi perilaku yang benar dalam mode standby. Pastikan aplikasi Anda tidak aktif lebih sering dari setiap satu atau dua menit untuk menerima data ExerciseUpdate.
  • Untuk pemantauan kesehatan umum sepanjang hari, gunakan PassiveMonitoringClient, seperti yang dijelaskan dalam panduan tentang cara memantau data kesehatan dan kebugaran di latar belakang.

Kartu dan detail

Jika aplikasi Anda mendukung kartu atau detail, ikuti praktik terbaik berikut:

  • Nonaktifkan muat ulang otomatis, atau tingkatkan interval refresh menjadi 2 jam atau lebih lama.
  • Gunakan Firebase Cloud Messaging (FCM) atau tugas yang dijadwalkan dengan tepat untuk mengirim update data. Berhati-hatilah untuk mencegah kecepatan update yang cepat, yang dapat menyebabkan sistem menjadwalkan pekerjaan berulang dengan kecepatan yang lebih cepat daripada pengguna atau platform dapat mengakses data yang diperlukan untuk melakukan pekerjaan tersebut.
  • Jangan jadwalkan pekerjaan untuk kartu atau detail Anda saat pengguna tidak berinteraksi dengannya.
  • Gunakan pendekatan offline-first.
  • Bagikan satu database di seluruh aplikasi utama, kartu, dan detail Anda. Hal ini juga membantu data tetap konsisten di seluruh platform UI.