Mobile Development 23 min read

Android O New Features, Behavior Changes, and API Updates

Android O (8.0) adds fluid‑experience features such as notification channels and dots, picture‑in‑picture, adaptive icons, autofill, downloadable fonts, pinned shortcuts, TextView auto‑sizing and media enhancements, while Vitals improve battery, security and stability, and it introduces background execution limits, stricter permissions, new WebView and UI APIs, unified margins, animation set improvements, and overlay‑window changes.

Tencent Music Tech Team
Tencent Music Tech Team
Tencent Music Tech Team
Android O New Features, Behavior Changes, and API Updates

Android O (Android 8.0) focuses on two major themes: Fluid Experiences and Vitals . Fluid Experiences bring four notable features – Notification Dots, Picture‑in‑Picture (PiP), Autofill Framework, and Smart Text Selection – while Vitals optimize battery life, security, startup time, and overall stability.

1.1 Notification Changes – Android O redesigns notifications with notification channels that let users manage groups of notifications uniformly. Channels are created once and cannot be altered programmatically; users control priority, badge visibility, and can mute channels. The system also adds notification badges (dots) on app icons and a “notification sleep” feature that postpones delivery. Code for creating channels can be found in the official Android documentation.

1.2 Picture‑in‑Picture (PiP) – Previously limited to Android TV, PiP is now available on all devices. When an activity enters PiP, onPause is called, so media should be paused in onStop . Enabling PiP requires activating the System UI Tuner, navigating to Settings > System > System UI Tuner > Navigation bar , and assigning a keycode (e.g., 171) to the PiP action. To make an activity support PiP, add android:supportsPictureInPicture="true" to the manifest and optionally call Activity.enterPictureInPictureMode(PictureInPictureArgs args) at runtime.

1.3 Adaptive Icons – Android O supports adaptive icons that the system masks into various shapes. Developers provide a foreground and background layer (both 108 × 108 dp, with a 72 × 72 dp visible area). The system adds an 18 dp safety zone for visual effects. See the official guide for creating adaptive icons.

1.4 Autofill Framework – A system‑level autofill service can fill usernames, passwords, addresses, etc., without exposing security risks. Enable it via Settings > Apps & Notifications > Default apps > Autofill app . The framework is documented under Android’s Autofill API.

1.5 XML Fonts and Downloadable Fonts – XML font resources let apps define <font-family> with separate <font> entries for style and weight. Downloadable fonts (supported via the Android Support Library 26) allow apps to fetch fonts at runtime, reducing APK size. Example XML: <?xml version="1.0" encoding="utf-8"?> <font-family xmlns:android="http://schemas.android.com/apk/res/android"> <font android:fontStyle="normal" android:fontWeight="400" android:font="@font/lobster_regular" /> <font android:fontStyle="italic" android:fontWeight="400" android:font="@font/lobster_italic" /> </font-family>

1.6 Pinned Shortcut – Long‑pressing an app icon shows shortcuts; a shortcut can be dragged to the home screen as a pinned shortcut using the Pinning Shortcuts API.

1.7 TextView Auto‑Sizing – TextView can automatically scale text size with setAutoSizeTextTypeWithDefaults(@AutoSizeTextType int autoSizeTextType) or via XML attribute android:autoSizeTextType="uniform" . The feature is back‑ported to API 14 via the Support Library.

1.8 Media Enhancements – New classes such as VolumeShaper and AudioFocusRequest improve audio control. Media APIs now expose getMetrics() (e.g., MediaPlayer.getMetrics() ). LDAC wireless audio codec is supported for high‑resolution Bluetooth playback.

1.9 Other Features – Support for wide‑color gamuts, larger screen aspect ratios, multi‑display, EmojiCompat, Smart Text Selection, and more.

2. Android O Behavior Changes

2.1 Background Execution Limits – When an app is cached (no foreground component), wake locks are released. Background services are restricted; most implicit broadcast receivers are blocked. Exceptions include high‑priority FCM messages, SMS/MMS broadcasts, and pending intents from notifications. JobScheduler is recommended for background work.

2.2 Security – SSLv3 is removed, WebView runs in a separate process, TLS fallback is disabled, and SECCOMP filters restrict system calls.

2.3 Network & HTTP Changes – OPTIONS requests now include Content‑Length: 0 , URL handling tweaks, stricter URI validation, and changes to proxy selectors and socket behavior.

2.4 Permissions – Runtime permission grants are now scoped to the exact permission requested; subsequent requests for other permissions in the same group are auto‑approved after the first grant.

2.5 Media Changes – AudioTrack can use deep buffers, audio streams are limited to volume control, MediaPlayer/Recorder/Codec now expose getMetrics() , and audio focus handling is refined.

2.6 Native Libraries – Writable‑and‑executable segments are prohibited; native libraries must not contain both writable and executable sections.

2.7 Miscellaneous – ContentProvider paging, refresh methods, JobScheduler improvements, collection API changes, locale/internationalization updates, Bluetooth ScanRecord changes, and input/navigation updates.

3. Android O API Changes

3.1 WebView New APIs – Retrieve WebView version via PackageInfo webViewPackageInfo = WebView.getCurrentWebViewPackage(); , enable Safe Browsing via manifest meta‑data, and use Termination Handle and Renderer Importance APIs to monitor WebView process health.

3.2 findViewById – Now returns <T extends View> , eliminating the need for explicit casts.

3.3 Unified Margins & Padding – New XML attributes: layout_marginVertical , layout_marginHorizontal , paddingVertical , and paddingHorizontal , which set both start/end or top/bottom values.

3.4 AnimationSet – Supports seeking to a specific point and reverse playback, simplifying animation definitions.

3.5 Alert Windows – Legacy window types (TYPE_PHONE, TYPE_SYSTEM_ALERT, etc.) are deprecated. Apps must use TYPE_APPLICATION_OVERLAY , which places overlays below status bar/IME and can be disabled by the user via notification settings.

mobile developmentAndroidPicture-in-PictureAPI changesNotificationsOreo
Tencent Music Tech Team
Written by

Tencent Music Tech Team

Public account of Tencent Music's development team, focusing on technology sharing and communication.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.