Leistung planen

Wir empfehlen, die folgenden Best Practices einzuhalten, damit deine App zusammen mit Health Connect gut funktioniert.

Daten schreiben

Apps dürfen nur Daten aus eigenen Quellen in Health Connect schreiben.

Wenn Daten in Ihrer Anwendung aus einer anderen Anwendung importiert wurden, ist die andere Anwendung dafür verantwortlich, ihre eigenen Daten in Health Connect zu schreiben.

Außerdem empfiehlt es sich, eine Logik zur Verarbeitung von Schreibausnahmen zu implementieren, z. B. wenn Daten außerhalb der Grenzen liegen oder ein interner Systemfehler vorliegt. Sie können Ihre Backoff- und Wiederholungsstrategien auf einen Jobplanungsmechanismus anwenden. Wenn das Schreiben in Health Connect fehlschlägt, sorgen Sie dafür, dass Ihre Anwendung über diesen Punkt des Exports hinausgeht. Vergessen Sie nicht, Fehler zu protokollieren und zu melden, um die Diagnose zu erleichtern.

Beim Daten-Tracking können Sie einer Reihe von Vorschlägen folgen, je nachdem, wie Ihre App Daten schreibt.

Passives Tracking

Dazu gehören Apps, die passives Fitness- oder Gesundheitstracking wie das kontinuierliche Aufzeichnen von Schritten oder Herzfrequenz im Hintergrund durchführen.

Ihre App muss regelmäßig Daten auf folgende Arten in Health Connect schreiben:

  • Bei jeder Synchronisierung sollten nur neue Daten geschrieben und Daten aktualisiert werden, die seit der letzten Synchronisierung geändert wurden.
  • Gruppieren Sie Anfragen pro Schreibanfrage auf maximal 1.000 Datensätze.
  • Verwenden Sie WorkManager, um regelmäßige Hintergrundaufgaben mit einem Zeitraum von mindestens 15 Minuten zu planen.
  • Aufgaben nur dann ausführen, wenn das Gerät inaktiv und der Akkustand nicht niedrig ist

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

Aktives Tracking

Dazu gehören Apps, die ein ereignisbasiertes Tracking, wie z. B. Training und Schlaf, oder manuelle Nutzereingaben wie Ernährung durchführen. Diese Einträge werden erstellt, wenn die App im Vordergrund ausgeführt wird, oder in seltenen Fällen, wo sie mehrmals am Tag verwendet wird.

Achten Sie darauf, dass Health Connect nicht über die gesamte Dauer des Ereignisses in Ihrer App ausgeführt wird.

Es gibt zwei Möglichkeiten, Daten in Health Connect zu schreiben:

  • Synchronisiere Daten nach Abschluss der Veranstaltung mit Health Connect. So kannst du beispielsweise Daten synchronisieren, wenn der Nutzer eine aufgezeichnete Trainingssitzung beendet.
  • Planen Sie eine einmalige Aufgabe mit WorkManager, um Daten später zu synchronisieren.

Abtastrate

Verwenden Sie beim Schreiben von Daten in Health Connect geeignete Abtastraten, um die Speicherauslastung zu reduzieren. Sie sollten sich beispielsweise überlegen, wie oft Daten zur Schrittzahl aufgezeichnet werden müssen oder welche Art von Abtastratendatentypen, die mit einem aktiven Training verknüpft sind (z. B. Geschwindigkeit), sie erfordern.

Nicht jeder Datentyp erfordert die gleiche Abtastrate. Es hat kaum Vorteile, die Daten zur Schrittzahl jede Sekunde zu aktualisieren, im Gegensatz zu einem weniger häufigen Rhythmus, z. B. alle 60 Sekunden. Mit höheren Abtastraten erhalten Nutzer jedoch möglicherweise detailliertere und detailliertere Informationen zu ihren Gesundheits- und Fitnessdaten. Die Abtastratenhäufigkeit muss ein Gleichgewicht zwischen Detail und Leistung finden.

Daten synchronisieren

Die folgenden Faktoren beeinflussen den Synchronisierungsprozess.

Ablauf des Tokens

Da ein nicht verwendetes Changes-Token innerhalb von 30 Tagen abläuft, sollten Sie eine Synchronisierungsstrategie anwenden, damit in einem solchen Fall keine Informationen verloren gehen. Ihre Strategie könnte die folgenden Ansätze umfassen:

  • Suchen Sie im App-Datenspeicher nach dem zuletzt genutzten Datensatz, der auch ein id von Health Connect enthält.
  • Fordern Sie Datensätze von Health Connect an, die mit einem bestimmten Zeitstempel beginnen, und fügen Sie sie dann im Datenspeicher Ihrer Anwendung ein oder aktualisieren Sie sie.
  • Fordern Sie ein Änderungstoken an, um es für die nächste Verwendung zu reservieren.

Empfohlene Strategien für das Änderungsmanagement

Falls Ihre App ungültige oder abgelaufene Changes-Tokens erhält, empfehlen wir je nach Anwendung in Ihrer Logik die folgenden Verwaltungsstrategien:

  • Alle Daten lesen und deduplizieren. Das ist die ideale Strategie.
    • Speichert den Zeitstempel des letzten Zeitpunkts, an dem Daten aus Health Connect gelesen wurden.
    • Lesen Sie nach Ablauf des Tokens alle Daten ab dem neuesten Zeitstempel oder der letzten 30 Tage noch einmal. Deduplizieren Sie diese anschließend mithilfe von Kennungen mit den zuvor gelesenen Daten.
    • Implementieren Sie idealerweise Client-IDs, da sie für Datenaktualisierungen erforderlich sind.
  • Nur Daten seit dem Zeitstempel des letzten Lesevorgangs lesen. Dies führt zu einigen Datenabweichungen um den Zeitpunkt des Ablaufs des Änderungstokens. Der Zeitraum ist jedoch kürzer und kann einige Stunden bis einige Tage in Anspruch nehmen.
    • Speichert den Zeitstempel des letzten Zeitpunkts, an dem Daten aus Health Connect gelesen wurden.
    • Nach Ablauf des Tokens alle Daten ab diesem Zeitstempel lesen.
  • Daten der letzten 30 Tage löschen und dann lesen Dies entspricht eher dem, was bei der ersten Integration passiert.
    • Alle Daten löschen, die die App in den letzten 30 Tagen aus Health Connect gelesen hat.
    • Lies nach dem Löschen alle diese Daten noch einmal.
  • Daten der letzten 30 Tage ohne Deduplizierung lesen: Dies ist die ungünstigste Strategie und führt dazu, dass Nutzern doppelte Daten angezeigt werden.
    • Alle Daten löschen, die die App in den letzten 30 Tagen aus Health Connect gelesen hat.
    • Doppelte Einträge zulassen.

Tokens für Datentypänderungen

Wenn Ihre Anwendung mehr als einen Datentyp unabhängig voneinander verarbeitet, verwenden Sie für jeden Datentyp ein separates Änderungstoken. Verwenden Sie mit der Changes Sync API nur dann eine Liste mehrerer Datentypen, wenn diese Datentypen gemeinsam oder gar nicht verwendet werden.

Bücher im Vordergrund

Apps können Daten aus Health Connect nur lesen, wenn sie im Vordergrund ausgeführt werden. Bei der Synchronisierung von Daten aus Health Connect kann der Zugriff auf Health Connect jederzeit unterbrochen werden. Beispielsweise muss Ihre Anwendung Unterbrechungen während einer Synchronisierung verarbeiten, wenn eine große Menge an Daten aus Health Connect gelesen wird, und beim nächsten Öffnen der Anwendung fortfahren.

Timings importieren

Da Ihre App nicht über neue Daten benachrichtigt werden kann, suchen Sie an zwei Punkten nach neuen Daten:

  • Jedes Mal, wenn Ihre App im Vordergrund aktiv wird. Verwenden Sie in diesem Fall Lebenszyklusereignisse.
  • In regelmäßigen Abständen, während die App im Vordergrund ausgeführt wird. Benachrichtigen Sie Nutzer, wenn neue Daten verfügbar sind, sodass sie ihren Bildschirm entsprechend aktualisieren können.

Ratenbegrenzungen

In seltenen Fällen legt Health Connect Ratenbegrenzungen für Anfragen von Ihrer App fest. Dies dient dazu, die Auswirkungen auf den Akku und die Geräteleistung zu begrenzen.

  • Wir empfehlen dringend, die Best Practices zu befolgen, um zu verhindern, dass Anfragen Ihrer Anwendung aufgrund der Ratenbegrenzung abgelehnt werden.
  • Apps sollten nicht gegen die Ratenbegrenzung verstoßen. Beispielsweise können Daten im Hintergrund bei der nächsten regelmäßigen Aufgabe geschrieben werden, falls Anfragen aufgrund der Ratenbegrenzung fehlschlagen.

App einrichten

Viele Apps haben einen benutzerdefinierten Onboarding-Ablauf, z. B. Informationen zu Funktionen oder Einholung der Nutzereinwilligung. Entwicklern wird dringend empfohlen, eine Onboarding-Aktivität zu exportieren, die von Health Connect gestartet wird, wenn der Nutzer zum ersten Mal mit der App interagiert. Fügen Sie dazu Folgendes in Ihr Manifest ein:

<!-- 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>

Hinweis: Diese Funktion wird für Android 14 noch nicht unterstützt, wird aber bald verfügbar sein.

Wenn ein Nutzer versucht, Ihre App mit Health Connect zu verbinden, wird die exportierte Aktivität gestartet. Diese Aktivität muss folgende Voraussetzungen erfüllen:

  • Zeigen Sie alle relevanten Informationen für Nutzer an, z. B. welche Daten geschrieben oder gelesen werden.
  • Bitten Sie den Nutzer gegebenenfalls um seine Einwilligung.
  • Sende eine Berechtigungsanfrage an Health Connect.
  • Jede andere anwendungsspezifische Logik ausführen, z. B. die Einplanung eines regelmäßigen Workers
  • Erlauben Sie dem Nutzer anschließend, die Aktivität zu schließen.

Bei Apps, die keine Onboarding-Aktivität exportieren, leitet Health Connect den Nutzer stattdessen zum Bildschirm Berechtigungen verwalten weiter, sobald er versucht, die App zu verbinden. Dies kann für Apps akzeptabel sein, bei denen Berechtigungen die einzige Voraussetzung für das Funktionieren der Integration sind.

Die Onboarding-Aktivität kann mehr als einmal gestartet werden, z. B. wenn der Nutzer später Berechtigungen für Ihre App widerruft und sie wieder verbindet.