Table of contents
A month ago Google introduced a new version of Android — Oreo. During the presentation we heard that it is faster, safer and better. But is it true? We looked under the hood of the new version and would like to share all the new features and improvements it has.
Oreo has so many changes that we had to split the article into two parts. In order to not make you bored with a huge long read. This part will cover all general changes and the second part will focus on security.
Android becomes Faster
Devices with Android Oreo will have twice-faster boot time. Well, at least Google says so. After performing some tests on our Nexus 5X and Pixel phones we can say that boot time is faster, but not twice. Both devices start ~30% faster depending on a number of installed apps. It is good to know that developers are still working on performance improvements even for such small things.
Battery life improves
Since Android 5.0 and its Battery saver feature release guys from Google have been working hard on power consumption optimizations to bring users enough mobility… And to stop the flow of jokes and memes about Android`s battery life, of course.
Marshmallow (Android 6.0) gave users the Doze mode — intelligent sleep-mode to bring even more battery life. Its main purpose was to suspend all heavy apps and services in the background. It also had to be sure not to restrict everything too much in order to not miss notifications or updates. To solve this problem the system allowed device to wake up from time to time to check for updates.
Android 7.0 didn’t have much in its sleeve about mobility.
Thus, the new version had to catch up.
And it nailed it.
Starting with Oreo, there are new background limits for all apps. The system will define if the app is in background and suspend it without harming user experience. App developers should now use JobScheduler to handle all the tasks that require background work. In fact, JobScheduler appeared in Marshmallow and developers had a chance to prepare updates. If you haven`t started using it yet, well, this is the right moment to do so.
By default, these restrictions only apply to apps that target Android 8.0 (API level 26) or higher. However, users can enable most of these restrictions for any app from the Settings screen, even if the app targets an API level lower than 26.
Background location updates now also have limits. Any app can now retrieve user’s location only a few times each hour. It might look like no more battery drain would happen because of location updates in apps. But it is true only for cases when your app is in a background. While it is in foreground location updates work as before. Thus, your intensively used Facebook app would still consume most of the battery life.
These limitations apply to all apps used on devices running Android 8.0 (API level 26) or higher, regardless of an app’s target SDK version
In Android 8.0 notification system became sweeter than ever before. The transformation started in 7.0 with extended control of notifications went one step further.
The brand new Notification Channels feature sorts notifications depending on their category. It allows to mute/disable anything you want to. Developers targeting Oreo should split notifications in their apps into channels. Each channel will turn into a separate category with its own controls.
Updated on 22.09.2017: if you change your target SDK to 26 without creating at least one channel, notifications won`t appear at all. To avoid such situations Google added a new setting to Developer Options called Show notification channel warnings. It shows you a toast message with an error when a notification with no category arrives.
Additionally, the system will group notifications from different apps by categories. It means things like news, messages or updates will be grouped and won`t take the whole screen.
Another cool feature is snoozing. We all had such frustrating situations when you’re not able to handle the notification right away and later forget to return to it. Now you can snooze any notification to make it appear later as a new one. To do so you should slightly swipe the notification to the right and tap on clock icon.
Finally, apps now have notification dots on their icons to show you that there is something new (hello, iOS). Not everyone is going to like them and Google agrees on that, because you can turn off dots in settings.
By default, the color of the dot is defined by the app’s theme, but you as a developer can specify it yourself too.
Seems that dots won’t appear on every device with Android Oreo. While it works great on Pixel, on Nexus 5X we were not able to see these dots despite the fact that they are turned on by default.
Great new feature called Instant Apps allows to start apps without even installing it. It means that we can experience cool feature or UI of the app before spending time and storage on download.
But how on Earth is that possible? Well, developers need to modularize their apps first and create a module which will serve as an Instant App. Such app launches by clicking on special URLs. That is why developers also have to integrate Android App Links.
Instant Apps are currently available only in 40 countries and on a few devices, so you might not be able to use them right away.
Devices starting with Android Marshmallow also support Instant Apps. Google promises to bring support to Lollipop in a few months.
The name says it all. The feature allows users watch a video or see his partner during a video call while doing other stuff on his device.
Currently, apps have their own requirements to start a PIP mode. While for YouTube it is enough to have any video playing, Chrome needs a user to have video in a full-screen mode. Some other apps have separate buttons to start PIP mode.
That’s why there might be some kind of standardization for this feature in the future.
Tired of filling all required forms in some apps? Don`t want to make mistakes in your inputs? In this case, the new Autofill Framework is for you.
The system will help a user fill all required fields with a few clicks. Existing apps will work well because the system defines the type of the field itself to suggest a proper variant. At least in most cases. To avoid problems it is better to add a few lines of code into the app to be sure that autofill will work as it should. Especially if the app uses custom views for fields. With customs views, the system might not recognize required input type. Documentation is clear as always so there should be no problems.
Another possible application of this framework is custom password managers.
With Oreo, text selection comes to a whole new level. Now Text selection is contextually aware. It means the system automatically recognizes addresses, phone numbers, URLs and contacts names. Knowing the context allows adding extra actions into a traditional copy-and-paste menu. For example, if the selected text is address, the system will add a button to open Google Maps and find this place.
Automatically turn on Wi-Fi near saved networks
The new mode allows remembering location every time a user connects to a new network. Later, the device turns on Wi-Fi when the user approaches a known location. As user leaves it, the device will turn it off to save battery and to keep your data safe from sniffers.
Google redesigned emoji from the ground-up to unify them and get rid of so-called blobs. Moreover, Oreo got 69 new emoji. Not sure if we need such a huge number, but messengers lovers should be happy.
Having new emoji is good until you want to send it to a friend with an old Android device. All your partner will get is a tofu sign or nothing at all. At least it was like that before. Google released version 26 of Support Library, which brings the support of all new emoji to Android version down to 4.4 (API 19).
But it still has some place for improvements. At UPTech, we had already found an issue in this new library when adopted it in our projects — EmojiEditText will crash with NullPointerException if you try to use setEnabled(false)on it (opened issue).
Updated on 07.11.2017: This bug is fixed in Support Library 27.0.0 despite not being mentioned in the release notes. Can confirm it as we checked it ourselves in one of our projects.
Google have finally heard requests to bring custom fonts into Android without third-party libraries. From now on, developers can integrate new fonts into their apps. We can even choose if we want to bundle a new font into the app or make it downloadable to decrease APK size.
With Support Library 26, this feature is available on APIs down to 14 too. Downloadable fonts made it possible to add new emoji to old devices. Font with emoji has to be bundled or downloaded at application startup.
In Android Oreo icons can change its shape and support visual effects like animations. Users are allowed to choose the shape of the icon. To make app support adaptive icons developers should provide icon resources separately considering required sizes and properties. More details can be found in official guidelines.
However, we were not able to find icons shape settings on our Nexus 5X, while Pixel has them. Looks like the device should have Pixel Launcher to change its icons.
Just a small improvement with possible huge impact — TextView can now adjust its size to fill all available space. It should help developers bring uniform user experience to all screen sizes. All you need to do is add required autosize properties to your layouts.
If you need to add this feature to older Android versions you should use Support Library 26. It allows to add autosize to all devices starting with Android 4.0 (API 14).
Be aware that currently there is an issue with Autozise and EmojiCompat widgets in Support library — EmojiTextView won`t resize like a normal TextView(reported issue).
Other cool stuff
Oreo has much more in store, but not everything is as cool as things mentioned above. Among other great things you will find:
- AAudio API designed for high-performance, low-latency audio.
- New high-quality Bluetooth Audio codecs made by Sony and Qualcomm.
- Devices with wide-gamut color capable displays can now show images with an embedded wide color profile (DCI-P3, AdobeRGB, etc.).
- Multiple-display support.
- New enterprise APIs with advanced device management.
As always, Google left an Easter egg inside new version. This time it’s fancy octopus controlled with a finger.
Why octopus? Probably, to troll users who tried to predict the name of the new version. There were rumors the new version will be called Octopus.
To find it tap three times on Android version in Settings. After Oreo logo appeared, tap it a few more times and long-press then.
Oreo is not a small visual update, but the deeply reworked version to make Android even sweeter for users. Despite some bugs, it is still worth a try. There are no doubts bugs will disappear with the release of Google Pixel 2 with Android 8.1 on board on 4th of October.
But it was just a general overview. Another article will cover all cool security improvements and updates.
Have you already started exploring all new features of Android Oreo? Let us know in comments below.