Leistung des Zifferblatts durch Hardwarebeschleunigung verbessern

Wear OS-Apps, die Standardansichten verwenden, profitieren vom automatischen hardwarebeschleunigten Grafikrendering. Zifferblätter werden jedoch normalerweise mit Canvass implementiert, sodass sie nicht automatisch Hardwarebeschleunigung erhalten.

Warum sollte ich ein hardwarebeschleunigtes Canvas für dein Zifferblatt verwenden?

In den meisten Fällen wird Ihr Zifferblatt mit einer höheren Framerate gerendert, wenn Sie ein hardwarebeschleunigtes Canvas verwenden. Bei höheren Frame-Rates erscheinen Animationen und Übergänge für das Auge flüssiger, was für eine bessere Nutzererfahrung sorgt.

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

Verwendet mein Zifferblatt die Hardwarebeschleunigung?

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

Mit Entwickleroptionen prüfen

Wenn Sie mithilfe der Entwickleroptionen prüfen möchten, ob Ihr Zifferblatt die Hardwarebeschleunigung nutzt, gehen Sie so vor:

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

    Mit dieser Option wird ein Overlay über sichtbaren Oberflächen – eine auf jeder Oberfläche – gezeichnet, um die für jede Phase des GPU-Renderings aufgewendete Zeit anzuzeigen.

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

  4. Wenn für Ihr Zifferblatt ein hardwarebeschleunigter Canvas verwendet wird, sehen Sie einen neuen Balken, 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 Ihr Zifferblatt die Hardwarebeschleunigung nutzt, gehen Sie so vor:

  1. Ändere auf einem Wear OS-Gerät das Zifferblatt zu dem Zifferblatt, das getestet werden soll.
  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 Ihr Zifferblatt die Hardwarebeschleunigung nutzt:

    adb shell dumpsys gfxinfo [package-name]

Nachdem Sie den Befehl ausgeführt haben, erhalten Sie eine Ausgabe, die in etwa so aussieht:

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 Ihrer Ausgabe insgesamt mehr als 0 gerenderte Frames angezeigt werden, wird für das Zifferblatt im Allgemeinen ein beschleunigter Canvas verwendet. Andernfalls ist die Gesamtzahl der gerenderten Frames und anderer Frame-Daten im Bericht normalerweise 0.

Da gfxinfo jedoch für das gesamte Paket Ihrer Anwendung ausgegeben wird, sehen Sie möglicherweise einige Frame-Time-Informationen von etwas anderem als einem hardwarebeschleunigten Canvas, z. B. von einem Activity, das Ihre Anwendung für einen Konfigurationsbildschirm verwendet. Um den Unterschied zu erkennen, achten Sie darauf, dass nur das Zifferblatt sichtbar ist, und 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 ansteigt.

Best Practices

Beachte diese Best Practices, um deinen Nutzern die bestmögliche Erfahrung zu bieten.

Akkulaufzeit maximieren

Wenn auf deinem Zifferblatt Animationen mit langer Ausführungszeit angezeigt werden, kann die Hardwarebeschleunigung die Akkulaufzeit eines Geräts erheblich verkürzen. Dieses Problem kann sich verschlimmern, wenn Ihr Zifferblatt versucht, in jedem Frame zu zeichnen. Um negative Auswirkungen auf deine Nutzer zu vermeiden, solltest du auf deinem Zifferblatt keine Animationen mit langer Ausführungszeit verwenden. Diese Richtlinie bezieht sich nicht speziell auf die Hardwarebeschleunigung, aber da durch die Hardwarebeschleunigung die Anzahl der Frames erhöht wird, die Sie zeichnen können, ist es noch wichtiger, sich an diese Richtlinie 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, finden Sie unter Hardwarebeschleunigung. Wenn Sie einen kleinen Codepfad haben, der einen nicht unterstützten Vorgang verwendet, können Sie einen Bitmap-Canvas erstellen und diese Bitmap dann mit canvas.drawBitmap() in den Canvas des Zifferblatts zeichnen.

Aufrechterhaltung der Kompatibilität bei Nutzung der Hardwarebeschleunigung

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, auf denen keine Hardwarebeschleunigung verfügbar ist, oder einen nicht unterstützten Zeichenvorgang auf einem hardwarebeschleunigten Canvas vermeiden möchten, können Sie Canvas.isHardwareAccelerated() aktivieren und die alternative Funktionalität angeben.