Merencanakan performa

Sebaiknya ikuti panduan praktik terbaik berikut untuk memastikan aplikasi Anda bekerja secara optimal bersama dengan Health Connect.

Menulis data

Aplikasi hanya boleh menulis data yang berasal dari aplikasi sendiri ke Health Connect.

Jika data di aplikasi Anda telah diimpor dari aplikasi lain, aplikasi tersebut yang bertanggung jawab untuk menulis data ke Health Connect.

Sebaiknya terapkan logika yang menangani pengecualian penulisan seperti data berada di luar batas, atau error sistem internal. Anda dapat menerapkan strategi backoff dan percobaan ulang pada mekanisme penjadwalan tugas. Jika penulisan ke Health Connect pada akhirnya gagal, pastikan aplikasi Anda dapat melewati titik ekspor tersebut. Jangan lupa mencatat dan melaporkan error untuk membantu diagnosis.

Saat melacak data, ada beberapa saran yang dapat Anda ikuti, bergantung pada cara aplikasi Anda menulis data.

Pelacakan pasif

Mencakup aplikasi yang melakukan pelacakan kebugaran atau kesehatan pasif, seperti mencatat langkah atau detak jantung secara terus-menerus di latar belakang.

Aplikasi Anda perlu menulis data secara berkala ke Health Connect dengan cara berikut:

  • Di setiap sinkronisasi, hanya operasi penulisan data baru dan pembaruan data yang diubah sejak sinkronisasi terakhir.
  • Tentukan batas permintaan maksimal ke 1.000 data per permintaan tulis.
  • Gunakan WorkManager untuk menjadwalkan tugas latar belakang berkala, dengan jangka waktu minimal 15 menit.
  • Batasi tugas yang akan dijalankan, hanya saat perangkat sedang tidak ada aktivitas dan tidak kehabisan baterai.

    val constraints = Constraints.Builder()
        .requiresBatteryNotLow()
        .requiresDeviceIdle(true)
        .build()
    
    val writeDataWork = PeriodicWorkRequestBuilder<WriteDataToHealthConnectWorker>(
            15,
            TimeUnit.MINUTES,
            5,
            TimeUnit.MINUTES
        )
        .setConstraints(constraints)
        .build()
    

Pelacakan aktif

Ini mencakup aplikasi yang melakukan pelacakan berbasis peristiwa, seperti olahraga dan tidur, atau input pengguna manual seperti nutrisi. Kumpulan data ini dibuat saat aplikasi berada di latar depan, atau dalam peristiwa yang jarang terjadi ketika aplikasi digunakan beberapa kali dalam sehari.

Pastikan aplikasi Anda tidak membuat Health Connect tetap berjalan selama peristiwa berlangsung.

Data harus ditulis ke Health Connect dengan salah satu dari dua cara:

  • Menyinkronkan data ke Health Connect setelah peristiwa selesai. Misalnya, menyinkronkan data saat pengguna mengakhiri sesi olahraga yang dilacak.
  • Menjadwalkan tugas satu kali menggunakan WorkManager untuk menyinkronkan data nanti.

Frekuensi sampel

Saat menulis data ke Health Connect, gunakan frekuensi sampel yang sesuai untuk membantu mengurangi beban penyimpanan. Misalnya, ada baiknya mempertimbangkan seberapa sering data jumlah langkah harus direkam, atau jenis data frekuensi sampel yang perlu ditautkan ke olahraga aktif (seperti kecepatan).

Tidak semua jenis data memerlukan frekuensi sampel yang sama. Tidak banyak manfaat dari memperbarui data jumlah langkah setiap detik, dibandingkan dengan ritme yang lebih jarang seperti setiap 60 detik. Namun, frekuensi sampel yang lebih tinggi dapat memberikan gambaran yang lebih mendetail dan terperinci kepada pengguna tentang data kesehatan dan kebugaran. Frekuensi sampel harus seimbang antara detail dan performa.

Menyinkronkan data

Faktor-faktor berikut memengaruhi proses sinkronisasi.

Akhir masa berlaku token

Karena masa berlaku token Changes yang tidak digunakan akan habis dalam waktu 30 hari, Anda harus menggunakan strategi sinkronisasi agar tidak kehilangan informasi dalam kasus tersebut. Strategi Anda dapat mencakup pendekatan berikut:

  • Mencari datastore aplikasi Anda untuk menemukan data yang baru saja digunakan dan juga memiliki id dari Health Connect.
  • Meminta kumpulan data dari Health Connect yang dimulai dengan stempel waktu tertentu, lalu sisipkan atau perbarui kumpulan data tersebut di datastore aplikasi.
  • Meminta token Changes untuk memesannya pada saat berikutnya diperlukan.

Strategi manajemen Changes yang direkomendasikan

Jika aplikasi Anda mendapatkan token Changes yang tidak valid atau sudah tidak berlaku lagi, sebaiknya gunakan strategi pengelolaan berikut, bergantung pada penerapannya dalam logika Anda:

  • Membaca dan menghapus duplikat semua data. Ini adalah strategi yang paling ideal.
    • Simpan stempel waktu terakhir saat data dari Health Connect dibaca.
    • Saat masa berlaku token habis, baca ulang semua data dari stempel waktu terbaru atau selama 30 hari terakhir. Kemudian, hapus duplikat data tersebut dari data yang sebelumnya dibaca menggunakan ID.
    • Idealnya, implementasikan Client ID karena bersifat wajib untuk pembaruan data.
  • Hanya membaca data sejak stempel waktu baca terakhir. Hal ini menyebabkan beberapa perbedaan data saat masa berlaku token Changes berakhir, tetapi jangka waktunya lebih singkat dan dapat memerlukan waktu beberapa jam hingga beberapa hari.
    • Simpan stempel waktu terakhir saat data dari Health Connect dibaca.
    • Saat masa berlaku token berakhir, baca semua data dari stempel waktu ini dan seterusnya.
  • Menghapus, lalu membaca data dari 30 hari terakhir. Hal ini lebih sesuai dengan hal yang terjadi pada integrasi pertama.
    • Hapus semua data yang dibaca aplikasi dari Health Connect selama 30 hari terakhir.
    • Setelah dihapus, baca lagi semua data ini.
  • Membaca data dari 30 hari terakhir tanpa menghapus duplikat. Ini adalah strategi yang paling tidak ideal, dan membuat data duplikat ditampilkan kepada pengguna.
    • Hapus semua data yang dibaca aplikasi dari Health Connect selama 30 hari terakhir.
    • Izinkan entri duplikat.

Token Changes jenis data

Jika aplikasi Anda menggunakan lebih dari satu jenis data secara terpisah, gunakan Token Changes yang berbeda untuk setiap jenis data. Hanya gunakan daftar beberapa jenis data dengan Changes Sync API jika jenis data ini dipakai bersama atau tidak sama sekali.

Pembacaan latar depan

Aplikasi hanya dapat membaca data dari Health Connect saat berada di latar depan. Saat menyinkronkan data dari Health Connect, akses ke Health Connect dapat terganggu. Misalnya, aplikasi Anda harus menangani gangguan di tengah sinkronisasi saat membaca data dalam jumlah besar dari Health Connect, dan melanjutkan saat berikutnya aplikasi dibuka.

Penentuan waktu impor

Saat aplikasi Anda tidak dapat menerima notifikasi data baru, periksa data baru di dua titik:

  • Setiap kali aplikasi Anda menjadi aktif di latar depan. Dalam hal ini, gunakan peristiwa siklus proses.
  • Secara berkala, saat aplikasi Anda tetap berada di latar depan. Beri tahu pengguna saat data baru tersedia, sehingga pengguna dapat memperbarui layar untuk menampilkan perubahan.

Batas kapasitas

Dalam situasi yang jarang terjadi, Health Connect menerapkan batas kapasitas pada permintaan dari aplikasi Anda. Hal ini dilakukan untuk membatasi dampak terhadap baterai dan performa perangkat.

  • Kami sangat menyarankan mengikuti panduan praktik terbaik untuk mencegah permintaan aplikasi Anda ditolak karena pembatasan kapasitas.
  • Aplikasi tidak boleh terpengaruh pembatasan kapasitas. Misalnya, data di latar belakang dapat ditulis selama tugas berkala berikutnya, jika permintaan gagal karena pembatasan kapasitas.

Melakukan aktivasi aplikasi

Banyak aplikasi memiliki alur orientasi kustom seperti edukasi tentang fitur atau meminta izin pengguna. Developer sangat disarankan untuk mengekspor aktivitas orientasi yang diluncurkan Health Connect saat pengguna berinteraksi dengan aplikasi untuk pertama kalinya. Untuk melakukannya, tambahkan kode berikut dalam manifes Anda:

<!-- Required to support pre-Android 14 devices with APK Health Connect -->
<activity
  android:name=".OnboardingActivity"
  android:exported="true"
  android:permission="com.google.android.apps.healthdata.permission.START_ONBOARDING"
  <intent-filter>
    <action android:name="androidx.health.ACTION_SHOW_ONBOARDING"/>
  </intent-filter>
</activity>
<!-- Required to support Android 14+ devices with platform Health Connect -->
<activity-alias
  android:name="UAndAboveOnboardingActivity"
  android:exported="true"
  android:targetActivity=".OnboardingActivity"
  android:permission="android.permission.health.START_ONBOARDING">
  <intent-filter>
    <action android:name="android.health.connect.action.ACTION_SHOW_ONBOARDING" />
  </intent-filter>
</activity-alias>

Perhatikan bahwa dukungan untuk fitur ini belum tersedia untuk Android 14, tetapi akan segera hadir.

Saat pengguna mencoba menghubungkan aplikasi Anda ke Health Connect, aktivitas yang diekspor akan diluncurkan. Aktivitas ini harus melakukan hal berikut:

  • Menampilkan edukasi pengguna yang relevan seperti menjelaskan data yang ditulis atau dibaca.
  • Meminta pengguna untuk memberikan izin jika diperlukan.
  • Membuat permintaan izin ke Health Connect.
  • Melakukan logika khusus aplikasi lainnya seperti menjadwalkan pekerja berkala.
  • Setelah selesai, mengizinkan pengguna menutup aktivitas.

Untuk aplikasi yang tidak mengekspor aktivitas orientasi, Health Connect akan mengarahkan pengguna ke layar Kelola izin setelah pengguna mencoba menghubungkan aplikasi. Hal ini dapat diterima untuk aplikasi yang hanya membutuhkan izin yang diberikan sebagai satu-satunya prasyarat agar integrasi berfungsi.

Perhatikan bahwa aktivitas orientasi dapat diluncurkan lebih dari sekali, misalnya jika pengguna nantinya mencabut izin ke aplikasi Anda, lalu menghubungkannya kembali.