Today we’re looking at how Android 10 utilizes collected info from phones connected with Google Play to optimize apps on current devices. After the initial shock of Android 10 gestures and the joy of discovering top-tier features like internal audio screen recording, we took a brief look at what lies beneath. Android 10 was released on September 3, 2019, starting with Google Pixel smartphones and moving out from there – right to Essential Phone and others.
UPDATE: Just to be EXTRA clear – the gathering of app startup and running info in Android with Google Play is not new with Android 10. This all started a while ago, per the next paragraph. The strictly newest bit is the Generational Garbage Collection (shown below). Most of this article we’re running through how we got here, to ART in Android 10.
With Android 10, ART (Android Runtime) further improved on a system introduced in Android 7 Nougat (2016) called Profile Guided Optimizations. Google gathers information from phones running an app that’d been downloaded from Google Play. That information is simple stuff – nothing personal. Just information on how certain hardware handles software, how, and how well each bit of code runs in any given machine.
That information is sent from Android devices up to the cloud, with Google Play. Google turns around and uses that information to provide a more informed, optimized startup and running of apps on new devices.
Optimized experiences in Android 9 Pie included faster startup, reduced memory footprints, less jank*, less disk space used, and increased battery life. That was the ideal goal, anyway. With Android 9, this system was called “ART optimizing profiles in Play Cloud”, and it allowed many apps like YouTube, Google Keep, Gmail, and others to start up quicker and run better than in the past.
*Jank is an unfavorable element in software and processing. The word jank can be used several ways, for example: “This software is janky, it’s full of jank.” Janky can be used as a slang term opposing optimization. Jank is bad.
The difference between early Android (a decade ago) and now is the way in which “garbage” is handled. As you’ll see in the video above, from Google Developers (GDG DevFest 2018), you’ll see how Google’s evolution on Garbage Collecting changed in a big way.
New features in Android 10
ART profiles – as noted above – allow Android to pre-compile parts of an app before the app is run. The part that Android 10 adds to this system is “Generational Garbage Collection” – added to ART’s already-in-play Concurrent Copying (CC) Garbage Collector. This new system separates objects into generations, collecting “young-generation” objects separate from the rest.
With this new Generational Garbage Collection in ART’s CC Garbage Collector, legacy “full-heap GC” need not be used, if not called upon. This new system can pick up just the young-gen objects in a process that’s far more efficient than full-heap GC, and – as is the ultimate goal – allowing apps to run more efficiently on all devices, including low-end devices.
Above you’ll see a whole lot about the latest ART Runtime, this time from the Android Dev Summit 2018. This talk was called “Deep Dive into the ART Runtime” and it was presented by Nicolas Geoffray and David Sehr.
Below you’ll see some of the most base-level simple results of this system at play – faster load times. This chart was made by Google, originally posted on their Android 10 developers site, and does not necessarily reflect the speeds you’ll see on your device.
Also if you’ve not already loaded Android 10 by now, have a peek at our Android 10 launch day quick guide. Or if you’ve got a Google Pixel device, you could just head to Settings. It goes Settings – System – Advanced – System update – and you should be able to get the Android 10 update right away!