Android UI Rendering Performance
The UI Rendering Performance metric measures the frames rendered per second during a session. It helps you identify the percentage of slow and frozen frames, and the number of ANRs (Application Not Responding) in your app. You can then optimize the rendering of such frames to ensure your app workflows are smooth, natural, and free of lag.
The following list describes how each metric is measured:
- Percentage of slow frames rendered: (Frames taking more than 16 ms to render * 100)/Total number of frames rendered during a session.
- Percentage of frozen Frames rendered: (Frames taking more than 700 ms to render * 100)/Total number of frames rendered during a session.
- No. of ANRs detected: Number of frames where user interaction was blocked for 5 s or longer.
In the app performance report, go to the UI Rendering Performance section to view the UI performance measurements. In the graph, the axes represents the following:
- X-axis: Depicts the time (in seconds) elapsed since the start of the session. 0 on the X-axis represents the start of the profiling session.
- Y-axis: Depicts the number of frames/slow frames rendered per second during the session.
Example
In the following example, you can see that 8.09% of the total rendered frames during the session were slow (frames that took more than 16 ms to render). Also, the app didn’t have any frozen frames or ANRs. The plot shows the number of frames rendered per second and the number of slow frames rendered per second.
To identify a problem frame, you can play the session video. Alongside the video, a bar moves on the graph to help you identify the frame of your interest. To view frames per second or slow frames per second individually, use the legends given on the graph.
Impact on user experience
Users expect smooth and natural interactions during app usage. The smoothness of image and text rendering is a vital factor that impacts users’ perception of app quality. It’s essential to prevent jank and sluggishness when drawing to the screen to provide a top-notch user experience.
A poor experience in rendering can cause users to rate apps poorly in the Play Store or abandon the app altogether.
Threshold guidelines
The recommended thresholds are:
- Percentage of slow frames in a session is 25% or less of overall frames rendered
- Percentage of frozen frames in a session is 0.1% or less of overall frames rendered
- Zero ANRs in a session
If your app exceeds these thresholds, App Performance Testing flags an issue in the performance report. To know more about the issue, see App performance issues - UI Rendering Performance.
Recommendations
The following are the recommendations to improve UI Rendering Performance:
- Optimize layout hierarchy: Simplify your app’s layout by avoiding nested and redundant layouts. Use lightweight views wherever possible and avoid overdraw.
- Optimize image loading: Efficiently load images with techniques like lazy loading and caching. Never load images synchronously on the main thread.
- Move expensive operations: Avoid UI freezes by moving CPU-intensive or network operations off the main thread.
- Offload heavy tasks: Execute long-running tasks such as network requests, disk I/O, and image processing on a separate thread to prevent UI freezing.
- Use hardware acceleration: Improve rendering performance by utilizing hardware features such as GPU rendering, hardware layers, and acceleration.
Related topics
We're sorry to hear that. Please share your feedback so we can do better
Contact our Support team for immediate help while we work on improving our docs.
We're continuously improving our docs. We'd love to know what you liked
We're sorry to hear that. Please share your feedback so we can do better
Contact our Support team for immediate help while we work on improving our docs.
We're continuously improving our docs. We'd love to know what you liked
Thank you for your valuable feedback!