Qualcuno può aiutarmi a trovare il tempo di rendering dell'interfaccia utente in perfetto / systrace?

Aug 23 2020

Sto cercando di trovare il tempo di rendering dell'interfaccia utente per ciascuna attività in Android. Vengo a sapere che si possono analizzare le prestazioni utilizzando systrace o perfetto. Ma il problema è trovare la parte di rendering dell'interfaccia utente da quell'enorme grafico. Qualcuno può aiutarmi a trovare il tempo di rendering dell'interfaccia utente da systrace o perfetto.

Risposte

YiYang Aug 26 2020 at 23:41

Traccia di sistema include i dati di tutti i processi in esecuzione sul dispositivo, quindi prima è necessario trovare i processi pertinenti. Ecco un paio di punti per iniziare:

  • Il tuo processo di app. Il nome dovrebbe essere com.your.app. Espandi quel processo e poi vuoi concentrarti sul thread principale (lo stesso nome del nome del processo) e un thread chiamato RenderThread. Screenshot del RenderThread e del thread principale in Android Studio
  • Il processo SurfaceFlinger . È un processo in esecuzione su dispositivi Android, responsabile della composizione delle superfici sul display. Espandi il processo e cerca il thread principale e una miriade di contatori (ad esempio VSYNC, SurfaceView) per aiutarti a risolvere i problemi di rendering. Screenshot dei contatori SurfaceFlinger in Perfetto

Per sapere esattamente cosa sta causando il problema di rendering dell'interfaccia utente, è necessario conoscere il funzionamento della tua app e alcune prove ed errori. Questi video potrebbero aiutarti:

  • Analisi delle prestazioni utilizzando Systrace: https://youtu.be/9kNhB_z704I
  • Risoluzione dei problemi di prestazioni delle app con System Trace in Android Studio (questo si concentra su Android Studio): https://youtu.be/EjmIit_amnE
  • Debug delle prestazioni dell'applicazione (questo è un po 'vecchio e utilizza ancora lo strumento legacy systrace): https://youtu.be/qXVxuLvzKek