Android 16 trong năm 2026: Các API mới, Desktop Mode và Câu Hỏi Phỏng Vấn
Phân tích chuyên sâu về Android 16 (API 36) bao gồm desktop mode, thông báo ProgressStyle, predictive back, áp dụng edge-to-edge bắt buộc và các câu hỏi phỏng vấn đi kèm.

Android 16 (API level 36, tên mã "Baklava") là một trong những bản cập nhật nền tảng có tác động lớn nhất kể từ cuộc cải tiến Material You của Android 12. Được phát hành ổn định vào ngày 10 tháng 6 năm 2025, hiện tại đã chạy trên hơn 21% thiết bị đang hoạt động tính đến tháng 9 năm 2026, trở thành một trong những phiên bản Android được triển khai rộng rãi nhất. Đối với các lập trình viên Android đang chuẩn bị phỏng vấn, việc hiểu rõ những thay đổi API này là điều bắt buộc.
Android 16 áp dụng ba thay đổi bắt buộc cho các ứng dụng nhắm mục tiêu API 36: hiển thị edge-to-edge là bắt buộc, các hạn chế về hướng xoay màn hình và khả năng thay đổi kích thước bị bỏ qua trên màn hình lớn (từ 600dp trở lên), và điều hướng quay lại dự đoán phải được xử lý đúng cách. Mọi cuộc phỏng vấn Android đều sẽ đề cập đến ít nhất một trong những điểm này.
Mô Hình Phát Hành SDK Android 16 và Chiến Lược Major-Minor
Android 16 giới thiệu cấu trúc phát hành kép thay đổi cách các lập trình viên lên kế hoạch áp dụng tính năng mới. SDK chính (major) được phát hành cùng Beta 3 vào tháng 3 năm 2025, khóa các thay đổi hành vi và API cốt lõi. SDK phụ (minor) thứ hai theo sau vào ngày 2 tháng 12 năm 2025, bổ sung API mới mà không thay đổi hành vi nền tảng.
Sự tách biệt này rất quan trọng trong phỏng vấn: bản phát hành chính là nơi chứa các thay đổi phá vỡ tính tương thích (edge-to-edge, bắt buộc về hướng xoay), trong khi bản phát hành phụ cung cấp khả năng mới (thư viện Jetpack bổ sung, API liên quan đến AI) mà không ảnh hưởng đến hành vi ứng dụng hiện có. Google thiết kế mô hình này để đẩy nhanh việc cung cấp API đồng thời mang đến mục tiêu hàng năm ổn định và có thể dự đoán cho các đội ngũ doanh nghiệp tuân thủ.
Một câu hỏi phỏng vấn phổ biến hỏi về targetSdkVersion so với compileSdkVersion trong bối cảnh mô hình kép này. Câu trả lời: targetSdkVersion = 36 kích hoạt tất cả các thay đổi hành vi từ bản phát hành chính. SDK phụ chỉ mang tính bổ sung, không cần đăng ký tham gia hoặc cập nhật target.
Áp Dụng Bắt Buộc Edge-to-Edge trên API 36
Các ứng dụng nhắm mục tiêu Android 16 không còn có thể từ chối bố cục edge-to-edge. Hệ thống bỏ qua các lệnh gọi setDecorFitsSystemWindows(true) và các cờ hiển thị SystemUI cũ. Mọi ứng dụng phải xử lý window insets chính xác hoặc có nguy cơ các thành phần UI bị ẩn sau thanh trạng thái và thanh điều hướng.
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// enableEdgeToEdge() is now the default on API 36+
// No opt-out available
enableEdgeToEdge()
setContent {
Scaffold(
modifier = Modifier.fillMaxSize()
) { innerPadding ->
// innerPadding accounts for system bars
MainContent(
modifier = Modifier.padding(innerPadding)
)
}
}
}
}Composable Scaffold trong Jetpack Compose xử lý insets tự động thông qua innerPadding. Đối với ứng dụng dựa trên View, ViewCompat.setOnApplyWindowInsetsListener vẫn là phương pháp được khuyến nghị. Chi tiết quan trọng: WindowInsetsCompat.Type.systemBars() phải được tiêu thụ một cách rõ ràng, nếu không hệ thống sẽ áp dụng padding mặc định có thể không phù hợp với thiết kế ứng dụng.
Nhà tuyển dụng thường hỏi điều gì xảy ra với các ứng dụng dựa vào android:fitsSystemWindows="true" trong bố cục XML. Trên API 36, thuộc tính này vẫn hoạt động nhưng chỉ áp dụng padding cho các thanh hệ thống, nó không còn ngăn ứng dụng vẽ edge-to-edge.
Ứng Dụng Thích Ứng và Thay Đổi Hướng Xoay Màn Hình Lớn
Android 16 bỏ qua android:screenOrientation và android:resizeableActivity="false" cho các ứng dụng không phải game trên màn hình có smallestWidth >= 600dp. Máy tính bảng, thiết bị gập, và màn hình ngoài được kết nối qua desktop mode đều đủ điều kiện. Điều này chấm dứt nhiều năm bố cục điện thoại có letterbox trên màn hình lớn.
// Responsive layout using WindowSizeClass
@Composable
fun AdaptiveLayout() {
val windowSizeClass = currentWindowAdaptiveInfo().windowSizeClass
when {
windowSizeClass.windowWidthSizeClass ==
WindowWidthSizeClass.EXPANDED -> {
// Two-pane layout for tablets/desktop
TwoPaneLayout()
}
windowSizeClass.windowWidthSizeClass ==
WindowWidthSizeClass.MEDIUM -> {
// Adapted layout for foldables
MediumLayout()
}
else -> {
// Phone layout
CompactLayout()
}
}
}Thư viện Jetpack WindowManager cung cấp WindowSizeClass cho thiết kế responsive. Thuộc tính opt-out có sẵn cho các ứng dụng nhắm mục tiêu API 36 cụ thể, nhưng Android 17 (API 37, phát hành ngày 16 tháng 6 năm 2026) đã loại bỏ hoàn toàn opt-out này. Các ứng dụng nhắm mục tiêu API 37 không thể hạn chế hướng xoay trên màn hình lớn.
Các ứng dụng vẫn dựa vào opt-out API 36 cho các hạn chế hướng xoay phải chuyển sang bố cục responsive trước khi nhắm mục tiêu API 37. Việc bắt buộc khả năng thay đổi kích thước trong Android 17 áp dụng cho tất cả ứng dụng không phải game trên màn hình từ 600dp trở lên.
Nhà tuyển dụng thường đặt câu hỏi theo dạng: "Làm thế nào để chuyển đổi ứng dụng bị khóa hướng dọc sang hỗ trợ màn hình lớn?" Câu trả lời liên quan đến việc thay thế hướng xoay cố định bằng bố cục responsive, kiểm tra các thay đổi cấu hình (đặc biệt là onConfigurationChanged), và xác minh rằng trạng thái đã lưu tồn tại qua các chuyển đổi kích thước màn hình.
Desktop Mode và Connected Displays
Desktop mode được phát hành như một tính năng sẵn có rộng rãi trong Android 16 QPR3 (Pixel Drop tháng 3 năm 2026), hỗ trợ các thiết bị Pixel 8 trở lên và Samsung Galaxy S26/Fold7/Flip7. Kết nối điện thoại với màn hình ngoài qua USB-C sẽ khởi chạy phiên desktop độc lập với thanh tác vụ, cửa sổ có thể thay đổi kích thước, nhiều desktop ảo, và hỗ trợ đầy đủ bàn phím/chuột.
fun launchOnExternalDisplay(context: Context) {
val displayManager = context.getSystemService(
Context.DISPLAY_SERVICE
) as DisplayManager
// Find external displays
val externalDisplays = displayManager.displays.filter {
it.displayId != Display.DEFAULT_DISPLAY
}
if (externalDisplays.isNotEmpty()) {
val options = ActivityOptions.makeBasic().apply {
launchDisplayId = externalDisplays.first().displayId
}
context.startActivity(
Intent(context, DesktopActivity::class.java),
options.toBundle()
)
}
}Điện thoại và màn hình ngoài hoạt động độc lập. Ứng dụng dành riêng cho màn hình mà nó đang chạy. Google và Samsung hợp tác trong trải nghiệm desktop windowing, tạo ra mục tiêu phát triển thống nhất. Samsung DeX tích hợp các API nền tảng giống nhau này.
Các cân nhắc chính cho lập trình viên về desktop mode:
- Các số liệu cửa sổ thay đổi động. Không cache các đối tượng
Display. Truy vấnWindowMetricsCalculatorhoặcLocalConfigurationcủa Compose mỗi khi cấu hình thay đổi. - Hỗ trợ bàn phím và chuột. Thiết bị ngoại vi bên ngoài là điều bình thường trong phiên desktop. Xử lý dispatch
KeyEventvà trạng thái hover của con trỏ. - Hỗ trợ đa phiên bản. Người dùng desktop mong đợi nhiều cửa sổ của cùng một ứng dụng. Khai báo
android:documentLaunchMode="intoExisting"hoặc xử lýFLAG_ACTIVITY_NEW_DOCUMENTmột cách phù hợp.
Sẵn sàng chinh phục phỏng vấn Android?
Luyện tập với mô phỏng tương tác, flashcards và bài kiểm tra kỹ thuật.
Thông Báo ProgressStyle và Live Updates
Android 16 giới thiệu Notification.ProgressStyle, một mẫu thông báo mới cho các hành trình người dùng tập trung vào tiến trình như theo dõi xe công nghệ, cập nhật giao hàng, và điều hướng. Điều này thay thế các bố cục thông báo tùy chỉnh đặc biệt bằng định dạng chuẩn hóa được hệ thống đề cao.
fun buildDeliveryNotification(
context: Context,
orderId: String,
progress: Float, // 0.0 to 1.0
currentStep: String
): Notification {
val style = Notification.ProgressStyle()
.setStyledByProgress(true)
.setProgress(progress)
.setProgressTrackerIcon(
Icon.createWithResource(context, R.drawable.ic_delivery_truck)
)
.addProgressSegment(
Notification.ProgressStyle.Segment(0.33f)
.setColor(context, R.color.segment_preparing)
)
.addProgressSegment(
Notification.ProgressStyle.Segment(0.33f)
.setColor(context, R.color.segment_in_transit)
)
.addProgressSegment(
Notification.ProgressStyle.Segment(0.34f)
.setColor(context, R.color.segment_delivered)
)
.addProgressPoint(
Notification.ProgressStyle.Point(0.0f)
.setLabel("Order placed")
)
.addProgressPoint(
Notification.ProgressStyle.Point(0.33f)
.setLabel("Preparing")
)
.addProgressPoint(
Notification.ProgressStyle.Point(0.66f)
.setLabel("In transit")
)
.addProgressPoint(
Notification.ProgressStyle.Point(1.0f)
.setLabel("Delivered")
)
return Notification.Builder(context, DELIVERY_CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("Order #$orderId")
.setContentText(currentStep)
.setStyle(style)
.setOngoing(true)
.build()
}ProgressStyle hỗ trợ segments (các phần có màu của thanh tiến trình), points (các mốc có nhãn), và biểu tượng theo dõi di chuyển dọc theo thanh. Thiết lập setStyledByProgress(true) cho phép hệ thống tô màu các segments dựa trên mức hoàn thành. Đối với chuẩn bị phỏng vấn về thông báo Android, việc hiểu khi nào sử dụng ProgressStyle so với thông báo setProgress() tiêu chuẩn là cần thiết: ProgressStyle dành cho các hành trình nhiều bước với các mốc riêng biệt, trong khi setProgress() vẫn phù hợp cho các hoạt động tác vụ đơn như tải xuống tệp.
Điều Hướng Predictive Back với OnBackInvokedCallback
Android 16 hoàn tất việc chuyển đổi nhiều năm từ onBackPressed() sang API OnBackInvokedCallback. Hệ thống giờ đây hiển thị hoạt ảnh "peek" của màn hình đích trong quá trình cử chỉ quay lại, cho phép người dùng xác nhận hoặc hủy. Các ứng dụng vẫn ghi đè onBackPressed() mà không đăng ký callback sẽ phá vỡ hoạt ảnh này.
class DetailActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (Build.VERSION.SDK_INT >= 36) {
onBackInvokedDispatcher.registerOnBackInvokedCallback(
OnBackInvokedDispatcher
.PRIORITY_SYSTEM_NAVIGATION_OBSERVER
) {
// Observe back navigation without intercepting
// Log analytics or trigger save-draft logic
analyticsTracker.logBackNavigation(
screen = "detail"
)
}
}
}
}Mức ưu tiên mới PRIORITY_SYSTEM_NAVIGATION_OBSERVER cho phép ứng dụng quan sát các sự kiện quay lại mà không chặn hoạt ảnh hệ thống. Android 16 cũng thêm finishAndRemoveTaskCallback và moveTaskToBackCallback cho các hành vi back-stack tùy chỉnh vẫn tích hợp với hoạt ảnh dự đoán.
Predictive back cũng hoạt động trên điều hướng 3 nút trong Android 16: nhấn giữ nút quay lại sẽ khởi động hoạt ảnh xem trước. Đây là chủ đề phỏng vấn thường gặp, các ứng viên chỉ đề cập đến điều hướng cử chỉ sẽ bỏ lỡ một nửa câu chuyện.
Notification Cooldown và Nhóm Bắt Buộc
Hai thay đổi thông báo bổ sung ảnh hưởng đến mọi ứng dụng Android. Notification cooldown giảm âm lượng cảnh báo cho các thông báo liên tiếp từ cùng một ứng dụng, dần dần giảm mức âm thanh trong khoảng 60 giây trước khi đặt lại. Tính năng này được bật theo mặc định và không thể bị ghi đè bởi lập trình viên.
Nhóm thông báo bắt buộc có nghĩa là hệ thống giờ đây tự động nhóm các thông báo bất kể ứng dụng có sử dụng setGroup() hay không. Các ứng dụng dựa vào sự nổi bật của thông báo riêng lẻ để tương tác có thể cần xem xét lại chiến lược thông báo của mình.
Để chuẩn bị phỏng vấn, những thay đổi này kết hợp tốt với các câu hỏi về Kotlin coroutines và Flow, vì việc gom nhóm và điều tiết thông báo hiệu quả thường liên quan đến các mẫu debouncing dựa trên coroutine.
Health Connect FHIR APIs và RangingManager
Android 16 mở rộng Health Connect với hỗ trợ ghi FHIR (Fast Healthcare Interoperability Resources), cho phép các ứng dụng sức khỏe tạo và lưu trữ hồ sơ y tế có cấu trúc. API RangingManager thống nhất đo khoảng cách/góc qua BLE channel sounding, BLE RSSI, Ultra-Wideband, và Wi-Fi RTT, hợp nhất những gì trước đây yêu cầu bốn bề mặt API riêng biệt.
Bộ chọn ảnh có API tùy chỉnh sâu hơn, cho phép lập trình viên kiểm soát giao diện của bộ chọn trong khi vẫn duy trì mô hình bảo mật sandbox tương tự. Tìm kiếm nhà cung cấp phương tiện đám mây đã được thêm vào trong Developer Preview 2.
Các API này ít có khả năng xuất hiện trong các cuộc phỏng vấn Android chung nhưng rất quan trọng đối với các vai trò chuyên biệt trong công nghệ y tế, IoT, hoặc các ứng dụng nặng về phương tiện.
Câu Hỏi và Trả Lời Phỏng Vấn Android 16
Dưới đây là những câu hỏi có khả năng xuất hiện nhất trong các cuộc phỏng vấn lập trình viên Android, được rút ra từ các thay đổi hành vi và API đã thảo luận ở trên.
H: Các thay đổi hành vi bắt buộc khi nhắm mục tiêu API 36 là gì?
Ba thay đổi được áp dụng: hiển thị edge-to-edge (không có opt-out), các hạn chế hướng xoay/khả năng thay đổi kích thước bị bỏ qua trên màn hình >= 600dp, và điều hướng predictive back được bật trên toàn hệ thống. Ứng dụng phải xử lý WindowInsets chính xác, hỗ trợ bố cục responsive, và chuyển từ onBackPressed() sang OnBackInvokedCallback.
H: Desktop mode ảnh hưởng đến kiến trúc ứng dụng như thế nào?
Desktop mode tạo phiên hiển thị độc lập. Ứng dụng phải tránh cache các đối tượng Display, hỗ trợ các số liệu cửa sổ động, xử lý đầu vào bàn phím/chuột, và xem xét các kịch bản đa phiên bản. API ActivityOptions.launchDisplayId cho phép nhắm mục tiêu màn hình cụ thể theo chương trình.
H: Khi nào ProgressStyle thay thế setProgress()?
ProgressStyle dành cho các hành trình người dùng nhiều bước với các mốc riêng biệt (xe công nghệ, giao hàng, điều hướng). setProgress() tiêu chuẩn vẫn phù hợp cho tiến trình hoạt động đơn (tải xuống tệp, tải lên). ProgressStyle được hiển thị nổi bật trong ngăn thông báo.
H: Mô hình phát hành SDK major/minor của Android 16 là gì?
Bản phát hành chính (tháng 3 năm 2025) chứa các thay đổi hành vi và yêu cầu cập nhật targetSdkVersion. Bản phát hành phụ (tháng 12 năm 2025) thêm API mới mà không có thay đổi hành vi, không cần tăng targetSdkVersion. Điều này tách biệt sự ổn định khỏi sự đổi mới.
H: Predictive back hoạt động với điều hướng 3 nút như thế nào?
Trên API 36+, nhấn giữ nút quay lại trên điều hướng 3 nút kích hoạt cùng hoạt ảnh dự đoán như điều hướng cử chỉ. Ứng dụng phải đăng ký OnBackInvokedCallback với mức ưu tiên phù hợp. Mức ưu tiên PRIORITY_SYSTEM_NAVIGATION_OBSERVER cho phép quan sát mà không chặn.
Bắt đầu luyện tập!
Kiểm tra kiến thức với mô phỏng phỏng vấn và bài kiểm tra kỹ thuật.
Nguồn Tham Khảo
- Android 16 is here (Android Developers Blog, tháng 6 năm 2025)
- Android 16 Features and APIs (Android Developers Documentation)
- Android 17 is here (Android Developers Blog, tháng 6 năm 2026)
- The First Beta of Android 17 (Android Developers Blog, tháng 2 năm 2026)
Ý Nghĩa Android 16 cho Phỏng Vấn Lập Trình Viên
- Edge-to-edge không còn là tùy chọn trên API 36. Kiểm tra tất cả màn hình để xử lý
WindowInsetschính xác, đặc biệt là thanh công cụ tùy chỉnh và bottom sheet. - Thay thế manifest hướng xoay cố định bằng bố cục responsive Jetpack Compose sử dụng
WindowSizeClass. Android 17 (API 37) đã loại bỏ opt-out. - Desktop mode sẵn sàng cho sản xuất trên Pixel 8 trở lên và các thiết bị cao cấp Samsung. Kiểm tra ứng dụng với màn hình ngoài, đầu vào bàn phím, và các kịch bản đa phiên bản.
- Chuyển từ
onBackPressed()sangOnBackInvokedCallback. Sử dụngPRIORITY_SYSTEM_NAVIGATION_OBSERVERđể theo dõi phân tích mà không chặn hoạt ảnh hệ thống. - Áp dụng
Notification.ProgressStylecho bất kỳ hành trình người dùng nhiều bước nào. Notification cooldown và nhóm bắt buộc ảnh hưởng đến tất cả ứng dụng bất kể target SDK. - Mô hình SDK major/minor có nghĩa là các thay đổi hành vi đến mỗi năm một lần. SDK phụ mang API mới mà không có rủi ro tương thích.
Bắt đầu luyện tập!
Kiểm tra kiến thức với mô phỏng phỏng vấn và bài kiểm tra kỹ thuật.
Bạn có tìm ra lỗi trong Android không?
Một đoạn mã thật, một lỗi ẩn, mỗi ngày một lượt. Không cần tài khoản để thử.

Viết bởi
Anthony Fillion-MailletNgười sáng lập SharpSkill
Lập trình viên fullstack hơn 10 năm. Anh điều hành SharpSkill và chịu trách nhiệm về mọi nội dung đăng tại đây.
Cập nhật ngày 21 tháng 9, 2026
Thẻ
Chia sẻ
Bài viết liên quan

Kotlin Flow vs StateFlow vs SharedFlow: Câu hỏi phỏng vấn Android năm 2026
Những câu hỏi Kotlin Flow vs StateFlow vs SharedFlow mà nhà tuyển dụng Android hỏi năm 2026, kèm câu trả lời rõ ràng, một bảng so sánh và mã nguồn sẵn sàng cho production.

Kotlin 2.3 cho Android: Name-Based Destructuring, KMP và Câu Hỏi Phỏng Vấn 2026
Câu hỏi phỏng vấn Kotlin 2.3 dành cho lập trình viên Android năm 2026. Name-based destructuring, KMP, context parameters, Flow và coroutines kèm ví dụ code.

20 Câu Hỏi Phỏng Vấn Jetpack Compose Hàng Đầu Năm 2026
20 câu hỏi phỏng vấn Jetpack Compose thường gặp nhất: recomposition, quản lý state, navigation, hiệu năng và các pattern kiến trúc.