Leistung des Zifferblatts durch Hardwarebeschleunigung verbessern

Wear OS-Apps, die Standardansichten verwenden, profitieren vom automatischen hardwarebeschleunigten Grafikrendering. Zifferblätter werden jedoch in der Regel mithilfe von Canvases implementiert, sodass die Hardwarebeschleunigung nicht automatisch erfolgt.

Was spricht für die Verwendung eines hardwarebeschleunigten Canvas für das Zifferblatt?

In den meisten Fällen wird das Zifferblatt mit einer höheren Framerate gerendert, wenn ein hardwarebeschleunigtes Canvas verwendet wird. Bei höheren Frame-Rates wirken Animationen und Übergänge flüssiger für das Auge, was die Nutzererfahrung verbessert.

Wenn du einen hardwarebeschleunigten Canvas verwendest, kannst du auch auf mehr UI-Leistungsdaten zu deinem Zifferblatt zugreifen. Sie können beispielsweise nur auf die detaillierten Frame-Informationen zugreifen, die unter UI-Leistung messen beschrieben sind, wenn Sie einen hardwarebeschleunigten Canvas verwenden.

Verwendet mein Zifferblatt die Hardwarebeschleunigung?

Mit den Entwickleroptionen oder mit adb können Sie prüfen, ob das Zifferblatt die Hardwarebeschleunigung verwendet.

Anhand der Entwickleroptionen prüfen

Mit den Entwickleroptionen können Sie prüfen, ob auf Ihrem Zifferblatt die Hardwarebeschleunigung verwendet wird. Gehen Sie dazu so vor:

  1. Gehen Sie auf einem Wear OS-Gerät zu Einstellungen > Entwickleroptionen.
  2. Aktivieren Sie Fehlerbehebung für GPU-Profilerstellung.

    Mit dieser Option wird ein Overlay auf sichtbaren Oberflächen dargestellt (eines auf jeder Oberfläche), um die Zeit anzuzeigen, die in den einzelnen Phasen des GPU-Renderings für diese Oberfläche aufgewendet wurde.

  3. Gehen Sie auf dem Gerät zurück zum Zifferblatt.

  4. Wenn auf dem Zifferblatt ein hardwarebeschleunigter Canvas verwendet wird, wird ein neuer Balken angezeigt, der sich für jeden gerenderten Frame des Zifferblatts von rechts nach links bewegt.

Mit ADB prüfen

Wenn Sie mit adb prüfen möchten, ob auf Ihrem Zifferblatt die Hardwarebeschleunigung verwendet wird, gehen Sie so vor:

  1. Ändern Sie auf einem Wear OS-Gerät das Zifferblatt in das Zifferblatt, das Sie testen möchten.
  2. Lassen Sie das Zifferblatt im interaktiven Modus einige Sekunden lang laufen.
  3. Führen Sie den folgenden adb-Befehl aus, um zu prüfen, ob das Zifferblatt die Hardwarebeschleunigung verwendet:

    adb shell dumpsys gfxinfo [package-name]

Nachdem Sie den Befehl ausgeführt haben, sieht die Ausgabe in etwa so aus:

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

...

Beachten Sie in dieser Beispielausgabe die Zeile Total frames rendered. Wenn in der Ausgabe die Gesamtzahl der gerenderten Frames größer als 0 angezeigt wird, verwendet das Zifferblatt im Allgemeinen einen beschleunigten Canvas. Andernfalls beträgt die Gesamtzahl der gerenderten Frames und andere Frame-Daten im Bericht normalerweise 0.

Da die gfxinfo jedoch für das vollständige Paket Ihrer Anwendung ausgegeben wird, sehen Sie möglicherweise einige Frame-Time-Informationen von etwas anderem als einem hardwarebeschleunigten Canvas, z. B. einem Activity, den Ihre Anwendung für einen Konfigurationsbildschirm verwendet. Achten Sie darauf, dass Ihr Zifferblatt die einzige sichtbare Oberfläche ist. Führen Sie dann den Befehl adb shell dumpsys gfxinfo noch einmal aus, um zu prüfen, ob der Wert für Total frames rendered zunimmt.

Best Practices

Befolgen Sie diese Best Practices, um die bestmögliche Erfahrung für Ihre Nutzer zu gewährleisten.

Akkulaufzeit maximieren

Wenn das Zifferblatt lange andauernde Animationen enthält, kann die Hardwarebeschleunigung die Akkulaufzeit eines Geräts erheblich verkürzen. Dieses Problem kann sich verschlimmern, wenn das Zifferblatt versucht, in jedem Frame zu zeichnen. Um negative Auswirkungen auf deine Nutzer zu vermeiden, solltest du auf dem Zifferblatt keine Animationen mit langer Laufzeit verwenden. Diese Richtlinie bezieht sich nicht speziell auf die Verwendung der Hardwarebeschleunigung. Da sie jedoch die Anzahl der Frames erhöht, die Sie zeichnen können, ist es umso wichtiger, sich an sie zu halten. Weitere Informationen finden Sie unter Best Practices für Animationen.

Unterstützte Zeichenvorgänge verwenden

Einige Zeichenvorgänge werden bei Verwendung der Hardwarebeschleunigung nicht unterstützt. Informationen dazu, was unterstützt wird, findest du unter Hardwarebeschleunigung. Wenn Sie einen kleinen Codepfad haben, der einen nicht unterstützten Vorgang verwendet, können Sie ein Bitmap-basiertes Canvas erstellen und diese Bitmap dann mit canvas.drawBitmap() in den Canvas des Zifferblatts zeichnen.

Kompatibilität bei Verwendung der Hardwarebeschleunigung aufrechterhalten

Die Hardwarebeschleunigung ist auf Wear OS-Geräten mit Android 9 (API-Level 28) oder höher verfügbar. Wenn Sie einen bestimmten Zeichenvorgang auf älteren Geräten, für den keine Hardwarebeschleunigung verfügbar ist, oder einen nicht unterstützten Zeichenvorgang auf einem hardwarebeschleunigten Canvas vermeiden möchten, aktivieren Sie Canvas.isHardwareAccelerated() und stellen Sie dann die alternative Funktion bereit.