Blog

Last update: June 2019

4 mins to read

Android Vitals – How Can It Help Optimize Your App?

Android Vitals is the buzzword on everyone’s lips, a push by Google to help app developers improve the technical function of their apps. It helps developers identify bad app behaviors that affect user experience, and provides them the metrics to fix them. But what are the metrics provided, and how does using Android Vitals give your app more weight in the Google Play Store algorithm?

Android Vitals records various criteria of your app’s performance, including the app’s stability, its rendering time, how it affects the device’s battery usage, etc. The data is then collected by Play Console and displayed on the Android Vitals dashboard. This amounts to key feedback on any erratic behaviors, bugs, or glitches that may be putting off users, and is crucial when it comes to quality control.

Not only does optimizing your app performance improve user engagement – an app that frequently crashes or drains battery is likely to lose users fast – but it will also boost your app’s listing on Google Play.

The Android Vitals dashboard focuses on 5 data types: Stability, Rendering, Battery Usage, App Startup Time, and Permissions.

Stability

Stability refers to how often an app is crashing, or displaying Application Not Responding (ANR) error messages. An ANR message appears when an app takes too long, giving users the option to force quit. These can be caused by long calculations or blocking operations on the app’s main thread, interprocess communication, or deadlocks and synchronization issues on the main thread.

Crashes occur when an unexpected exit is triggered by an unhandled exception (if the app is written in Java) or signal, such as SIGSEGV (if written in a native-code language).

Rendering

Ideally, an app’s speed of rendering should be under 16ms to hit 60 frames per second. Anything that takes longer than 16ms is considered slow. Slow UI rendering results in frames being skipped, making for a clunky experience, called “jank” in the industry

If frames take longer than 700ms to render, they are considered to be frozen. From the user’s perspective, the app has stopped moving altogether. And while it’s common for it to take longer than usual to render when an app is starting up or changing screens, if jank or frozen frames become a regular occurrence, it will reflect badly on your app.

Battery Life

There are a lot of features that can drain your phone’s battery, such as excessive background Wi-Fi scans, network usage, or stuck partial awake locks. Partial awake locks allow the developer to keep the device CPU running even after the display turns off. If this function gets stuck, it can drain battery by keeping the device from going into a low-power state.

To avoid this risk, it is best to explore different APIs that are more battery-friendly, such as DownloadManager for long-running HTTP downloads, a sync adapter for synchronizing data from an external server, or either JobScheduler or FirebaseJobDispatcher for launching background tasks at set intervals.

Android Vitals not only shows you where your battery is being drained by stuck awake locks, but it also provides comparisons to see how you can improve your app’s functioning. For example, the dashboard will show you a breakdown of how your app measures up to the performance of Google Play’s top 1,000 apps, graphs of sessions affected by various pain points, and can categorize it according to app version, Android OS version, and device.

Image Source: https://medium.com/googleplaydev/https-medium-com-googleplaydev-how-to-fix-app-quality-issues-with-android-vitals-part-2-7ba6ebe646ab

Wakeup alarms are also a major battery drain, a trigger set by the developer to schedule a time that the device will wake up from low-power mode and implement a partial awake lock while an onReceive(.) or onAlarm(.) method is executed. Minimize use of wakeup alarms by only using them for user-facing operations – for other background tasks, it’s better to use JobScheduler or FirebaseJobDispatcher.

App Startup Time and Permissions

Android Vitals takes into consideration that it can take different timespans for an app to start up, depending how long it has been since it was last opened. For instance, a cold start is when an app hasn’t been used in a while, where the activity goes from launched to running state. A slow cold start would be anything taking 5+ seconds.

A slow warm start (when the app has been used recently and is cached in memory) counts as 2+ seconds, and a slow hot start (when both app and activity are in memory) counts as 1.5 seconds.

Android Vitals also keeps track of the number of permission denials your app receives from users via the Play Console. This data is invaluable, as it can help you assess whether you need to amend your app permissions, or perhaps be more transparent with your users about why you are requesting a certain permission. Other newer features offered by the platform include benchmark categories and anomaly detection, to flag places where your app is acting unpredictably.

OpenBack Can Boost Your App’s Android Vitals Performance

How can OpenBack’s SDK optimize your app’s Android Vitals ranking? First of all, OpenBack can lessen drain on your battery, because it doesn’t have to rely on network calls and uses efficient, local-only processes. OpenBack’s  highly efficient native SDK is written only for the task of lightweight resource footprint, and is well proven on tens of millions of devices

All in all, Android Vitals are an imperative tool for any developer who wants to improve their app, provider their users the best UX possible, and as a result climb the ranks at Google Play. For more details on how Android Vitals can benefit your app, and how to use it, click here.

Submitting...