Android 16 introduces several important changes and new features for apps, focusing on performance, user experience, and adaptability across different devices.
Here are some of the key updates for apps in Android 16:
Table of Contents
Toggle✨ User Experience and Adaptability
-
Adaptive Layouts by Default: For apps targeting Android 16, the system largely ignores manifest attributes and APIs that restrict screen orientation, resizability, and aspect ratio on large screens (smallest width $\ge 600\text{dp}$). This pushes developers to create apps that adapt seamlessly to various screen sizes, orientations, and multi-window modes (like on tablets and foldables).
-
Live Updates for Notifications: A new notification style,
Notification.ProgressStyle, enables apps like delivery or rideshare services to provide real-time, progress-centric updates right in the notification panel and lock screen. -
Predictive Back Updates: Predictive back animations (showing a preview of the destination screen on a back gesture) are enabled by default for apps targeting Android 16. New APIs are available for more control and custom back behavior.
-
Richer Haptics: New APIs allow developers to define and control haptic effects using amplitude and frequency curves for a more customizable and advanced tactile experience.
🔔 Live Updates for Notifications (Progress-Centric Notifications)
Live Updates are Android’s answer to providing dynamic, frequently-updated, glanceable information for ongoing, user-initiated activities.
What is it?
Live Updates use a new notification style, Notification.ProgressStyle, designed to track the start-to-end journey of an activity.
-
Primary Use Cases: Rideshare status, food delivery tracking, active navigation, ongoing calls, and timers.
-
Key Features:
-
Prominent Display: Unlike standard notifications, Live Updates are “promoted.” They appear more prominently on the lock screen and can show as a “chip” or “pill” in the status bar (similar to the indicator for an ongoing call or screen recording), making the information accessible at a glance without pulling down the notification shade.
-
Progress-Centric UI: The new style uses points and segments on a visual progress bar to denote key milestones and states in a journey (e.g., “Food is being prepared,” “Driver is 5 min away,” or “You are 2 miles from the destination”).
-
Persistent Visibility: They are designed to stay visible and updated until the activity is complete, providing a superior experience compared to apps that had to send many standard, individual notifications for every small update.
-
Developer Requirements
To fully enable the “promoted” Live Update experience (status bar chip, prominent lock screen display), developers need to:
-
Use the new
Notification.ProgressStyleto build the notification. -
Mark the notification as an ongoing activity.
-
Include a short summary of the content for the status bar chip.
-
Declare the new
POST_PROMOTED_NOTIFICATIONSpermission and call the relatedrequestPromotedOngoingAPI.
📱 Adaptive Layouts: The End of Fixed Orientation
The changes to adaptive layouts are arguably the most significant behavioral shift in Android 16, particularly for large-screen devices.
What is Changing?
For apps targeting Android 16 (API level 36), the platform will ignore any manifest attributes or runtime APIs that an app uses to enforce layout restrictions when running on a large screen.
This means developers can no longer rely on forcing their app into:
-
A Fixed Orientation: e.g., only portrait mode.
-
A Fixed Aspect Ratio: e.g., a specific narrow phone ratio.
-
Non-resizable Windows: preventing multi-window or freeform desktop mode.
Where Do These Changes Apply?
These restrictions are ignored on any display with a smallest width $\ge 600\text{dp}$. This includes:
-
Tablets (like the Pixel Tablet)
-
The inner (main) display of large foldables (like the Pixel Fold)
-
Desktop environments and Chromebooks
The change is a strong push to make all Android apps truly responsive and adaptive across the entire ecosystem.
Key Developer Actions Required:
| Problem to Avoid | Solution |
| Stretched UI | Use maximum width constraints on components (especially buttons and forms) to prevent them from looking stretched across a wide landscape screen. |
| Off-screen Content | Ensure all layouts (especially those designed for a fixed portrait phone view) are scrollable to prevent buttons and information from being cut off in multi-window or other aspect ratios. |
| Lost UI State | Since orientation changes will now cause activity recreation (if not handled), developers must ensure they properly save and restore UI state using ViewModel or onSaveInstanceState(). |
| Camera Issues | Verify that camera viewfinder previews rotate and adjust correctly when the device changes orientation, as the app is no longer controlling it. |
Developers are encouraged to use Window Size Classes (from the Jetpack Compose Material 3 Adaptive library) to implement responsive UIs that adjust based on the available window space, not on the device type itself.
🚀 Performance and Efficiency
-
System-Triggered Profiling: Apps can register interest in receiving traces for critical events like cold starts or Application Not Responding (ANR) errors, which the system then automatically starts and stops for better performance analysis.
-
JobScheduler Enhancements: New APIs like
JobScheduler.getPendingJobReasons()andJobScheduler.getPendingJobReasonsHistory()provide better introspection into why a background job is pending, helping developers optimize background task scheduling. -
Resource Headroom APIs: New
getCpuHeadroom()andgetGpuHeadroom()APIs give resource-intensive apps (like games) estimates of available CPU and GPU resources to help them manage performance. -
16 KB Memory Page Compatibility: Adds a compatibility mode to help older apps built for 4 KB memory pages run more smoothly on devices configured for 16 KB memory pages, which is an optimization for performance.
⚙️ JobScheduler: Better Introspection and Quota Management
Android 16 significantly improves the tools developers have to diagnose and manage background tasks, while also introducing stricter execution limits.
Better Job Introspection
New APIs provide visibility into why a scheduled job isn’t running, which is crucial for debugging background latency issues.
| New API | Description |
JobScheduler.getPendingJobReasons(int jobId) |
Returns a list of the current constraints (both developer-defined and system-defined) that are preventing the specific job from running right now. |
JobScheduler.getPendingJobReasonsHistory(int jobId) |
Provides a history of the reasons why the job was recently pending or stopped. This helps track down intermittent failures and constraint changes over time. |
Stricter Execution Quotas
Android 16 further refines how background jobs are managed for better battery life:
-
Foreground Service Co-execution: Even if a job is running concurrently with a Foreground Service, it will now adhere to the job runtime quota. Previously, running a Foreground Service offered some protection from these limits.
-
App State Enforcement: Jobs that start while the app is visible (“top state”) but continue after the app becomes invisible will now also adhere to the job runtime quota.
-
Active Standby Bucket Enforcement: Stricter and more generous runtime quotas are applied based on the app’s App Standby Bucket (Active, Working Set, Frequent, Rare).
Developer Takeaway: The system is limiting all types of long-running background work. For lengthy, user-initiated operations, developers should strongly migrate to User-Initiated Data Transfer Jobs (which have more generous limits) instead of relying on standard JobScheduler tasks.
🔐 Privacy and Security
-
Embedded Photo Picker: The Photo Picker now supports embedding directly into an app’s view hierarchy, allowing a more integrated experience while still leveraging system process isolation for user privacy. It also adds new APIs for searching from cloud media providers.
-
Granular Health Permissions: Health and fitness permissions are transitioning to a more granular set of permissions under
android.permissions.health, which are used by Health Connect, requiring more specific user consent. -
Privacy Sandbox on Android: Continued work on this feature aims to limit tracking mechanisms and deliver personalized content using anonymized data.
📸 Media and Graphics
-
Advanced Professional Video (APV) Codec: Support for a new codec designed for professional-level, high-quality video recording and post-production.
-
Custom Graphical Effects with AGSL: New APIs like
RuntimeColorFilterandRuntimeXfermodeenable developers to author complex visual effects (like Sepia or Hue Saturation) and apply them to draw calls using the Android Graphics Shading Language.
🖼️ 2. Embedded Photo Picker (Enhanced Privacy & Integration)
The Photo Picker, introduced in previous versions, allows users to grant an app access to only selected media files instead of their entire media library, vastly improving privacy. Android 16 supercharges this feature with a seamless integration method.
What is Changing?
Previously, the Photo Picker launched as a full-screen, separate system activity. In Android 16, developers can now embed the Photo Picker directly into their app’s UI hierarchy.
-
Integrated Experience: Instead of the app’s current activity pausing and being replaced by the full-screen picker, the picker appears as a view (like an
EmbeddedPhotoPickerViewor a Compose composable) within the app’s existing screen layout. This makes media selection feel like a more natural, integrated part of the app. -
Continuous Selection: Users can select and deselect items without the picker closing. The host app remains active and can respond to selections in real-time, enabling smoother multi-selection workflows.
-
Privacy Maintained: Crucially, this integration is achieved using a dedicated
SurfaceViewand process isolation. This means the Photo Picker is still a separate system process, preventing the host app from seeing any media the user hasn’t explicitly selected. The privacy and security benefits of the system Photo Picker are maintained. -
Cloud Search: The Photo Picker now includes new APIs that enable search functionality across both local and cloud media providers (like Google Photos), making it much easier for users to find a specific photo.
Developer Takeaway: The Embedded Photo Picker eliminates the need for developers to create complex custom photo pickers and makes the transition to the privacy-preserving system picker more attractive.
The official public name for the operating system is simply Android 16.
While Google no longer uses dessert names publicly (a practice they ended with Android 10), they still use them internally during development. The internal codename for Android 16 is:
🍰 Baklava
This marks a break from the alphabetical sequence of previous Android versions (Android 15 was “Vanilla Ice Cream,” so the next letter would have been W). The change to “Baklava” is due to an update in the Android build system, which now causes the build IDs to start with the letter B.

