Android 16 Tahun 2026: API Baru, Desktop Mode, dan Pertanyaan Wawancara

Pembahasan mendalam Android 16 (API 36) mencakup desktop mode, notifikasi ProgressStyle, predictive back, pemberlakuan edge-to-edge, dan pertanyaan wawancara yang menyertainya.

Android 16 API terbaru Desktop Mode dan pertanyaan wawancara developer

Android 16 (API level 36, dengan kode nama "Baklava") merupakan salah satu pembaruan platform yang paling berdampak sejak perombakan Material You pada Android 12. Dirilis sebagai versi stabil pada 10 Juni 2025, kini berjalan di lebih dari 21% perangkat aktif per September 2026, menjadikannya salah satu versi Android dengan penyebaran terluas. Bagi pengembang Android yang mempersiapkan wawancara, memahami perubahan API ini bukan lagi pilihan.

Poin Kunci untuk Wawancara

Android 16 memberlakukan tiga perubahan wajib untuk aplikasi yang menargetkan API 36: rendering edge-to-edge bersifat wajib, pembatasan orientasi/resizability diabaikan pada layar besar (600dp ke atas), dan navigasi predictive back harus ditangani dengan benar. Setiap wawancara Android akan menyentuh setidaknya satu dari poin ini.

Model Rilis SDK Android 16 dan Strategi Major-Minor

Android 16 memperkenalkan struktur rilis ganda yang mengubah cara pengembang merencanakan adopsi fitur. SDK major diluncurkan bersama Beta 3 pada Maret 2025, mengunci perubahan perilaku dan API inti. SDK minor kedua menyusul pada 2 Desember 2025, menambahkan API baru tanpa mengubah perilaku platform.

Pemisahan ini penting dalam wawancara: rilis major adalah tempat perubahan yang merusak kompatibilitas berada (edge-to-edge, pemberlakuan orientasi), sementara rilis minor menyediakan kemampuan baru (library Jetpack tambahan, API terkait AI) tanpa dampak pada perilaku aplikasi yang ada. Google merancang model ini untuk mempercepat pengiriman API sambil memberikan target tahunan yang stabil dan dapat diprediksi bagi tim enterprise untuk kepatuhan.

Pertanyaan wawancara umum menanyakan tentang targetSdkVersion versus compileSdkVersion dalam konteks model ganda ini. Jawabannya: targetSdkVersion = 36 memicu semua perubahan perilaku dari rilis major. SDK minor bersifat aditif saja, tidak memerlukan opt-in atau pembaruan target.

Pemberlakuan Edge-to-Edge pada API 36

Aplikasi yang menargetkan Android 16 tidak dapat lagi memilih keluar dari layout edge-to-edge. Sistem mengabaikan pemanggilan setDecorFitsSystemWindows(true) dan flag visibilitas SystemUI lawas. Setiap aplikasi harus menangani window insets dengan benar atau berisiko elemen UI tersembunyi di balik status bar dan navigation bar.

MainActivity.ktkotlin
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 di Jetpack Compose menangani insets secara otomatis melalui innerPadding. Untuk aplikasi berbasis View, ViewCompat.setOnApplyWindowInsetsListener tetap menjadi pendekatan yang direkomendasikan. Detail penting: WindowInsetsCompat.Type.systemBars() harus dikonsumsi secara eksplisit, jika tidak sistem akan menerapkan padding default yang mungkin tidak sesuai dengan desain aplikasi.

Pewawancara sering menanyakan apa yang terjadi pada aplikasi yang mengandalkan android:fitsSystemWindows="true" dalam layout XML. Pada API 36, atribut ini masih berfungsi tetapi hanya menerapkan padding untuk system bars, atribut ini tidak lagi mencegah aplikasi menggambar edge-to-edge.

Aplikasi Adaptif dan Perubahan Orientasi Layar Besar

Android 16 mengabaikan android:screenOrientation dan android:resizeableActivity="false" untuk aplikasi non-game pada display dengan smallestWidth >= 600dp. Tablet, foldable, dan monitor eksternal yang terhubung melalui desktop mode semuanya memenuhi syarat ini. Hal ini mengakhiri bertahun-tahun layout ponsel dengan letterbox pada layar besar.

kotlin
// 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()
        }
    }
}

Library Jetpack WindowManager menyediakan WindowSizeClass untuk desain responsif. Properti opt-out tersedia untuk aplikasi yang menargetkan API 36 secara khusus, tetapi Android 17 (API 37, dirilis 16 Juni 2026) telah menghapus opt-out ini sepenuhnya. Aplikasi yang menargetkan API 37 tidak dapat membatasi orientasi pada layar besar.

Android 17 Menghapus Opt-Out

Aplikasi yang masih mengandalkan opt-out API 36 untuk pembatasan orientasi harus bermigrasi ke layout responsif sebelum menargetkan API 37. Pemberlakuan resizability wajib di Android 17 berlaku untuk semua aplikasi non-game pada layar 600dp atau lebih lebar.

Pewawancara sering membingkai ini sebagai: "Bagaimana cara memigrasikan aplikasi yang terkunci orientasi portrait untuk mendukung layar besar?" Jawabannya melibatkan penggantian orientasi tetap dengan layout responsif, pengujian perubahan konfigurasi (terutama onConfigurationChanged), dan verifikasi bahwa state yang tersimpan bertahan melalui transisi ukuran layar.

Desktop Mode dan Connected Displays

Desktop mode diluncurkan sebagai fitur ketersediaan umum di Android 16 QPR3 (Pixel Drop Maret 2026), mendukung perangkat Pixel 8 ke atas dan Samsung Galaxy S26/Fold7/Flip7. Menghubungkan ponsel ke monitor eksternal melalui USB-C meluncurkan sesi desktop independen dengan taskbar, jendela yang dapat diubah ukurannya, beberapa desktop virtual, dan dukungan penuh keyboard/mouse.

LaunchOnExternalDisplay.ktkotlin
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()
        )
    }
}

Ponsel dan display eksternal beroperasi secara independen. Aplikasi spesifik untuk display tempat ia berjalan. Google dan Samsung berkolaborasi dalam pengalaman desktop windowing, menciptakan target pengembang terpadu. Samsung DeX mengintegrasikan API platform yang sama ini.

Pertimbangan utama pengembang untuk desktop mode:

  • Metrik jendela berubah secara dinamis. Jangan cache objek Display. Query WindowMetricsCalculator atau LocalConfiguration Compose pada setiap perubahan konfigurasi.
  • Dukungan keyboard dan mouse. Periferal eksternal adalah hal biasa dalam sesi desktop. Tangani dispatch KeyEvent dan state pointer hover.
  • Dukungan multi-instance. Pengguna desktop mengharapkan beberapa jendela dari aplikasi yang sama. Deklarasikan android:documentLaunchMode="intoExisting" atau tangani FLAG_ACTIVITY_NEW_DOCUMENT dengan tepat.

Siap menguasai wawancara Android Anda?

Berlatih dengan simulator interaktif, flashcards, dan tes teknis kami.

Notifikasi ProgressStyle dan Live Updates

Android 16 memperkenalkan Notification.ProgressStyle, template notifikasi baru untuk perjalanan pengguna yang berpusat pada progress seperti pelacakan rideshare, pembaruan pengiriman, dan navigasi. Ini menggantikan layout notifikasi kustom ad-hoc dengan format standar yang dipromosikan sistem.

DeliveryNotificationHelper.ktkotlin
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 mendukung segments (bagian berwarna dari progress bar), points (milestone berlabel), dan ikon tracker yang bergerak sepanjang bar. Pengaturan setStyledByProgress(true) memungkinkan sistem mewarnai segments berdasarkan penyelesaian. Untuk persiapan wawancara tentang notifikasi Android, memahami kapan menggunakan ProgressStyle versus notifikasi setProgress() standar sangat penting: ProgressStyle untuk perjalanan multi-langkah dengan milestone berbeda, sementara setProgress() tetap sesuai untuk operasi tugas tunggal seperti unduhan file.

Android 16 menyelesaikan migrasi multi-tahun dari onBackPressed() ke API OnBackInvokedCallback. Sistem sekarang menampilkan animasi "peek" dari layar tujuan selama gesture back, memungkinkan pengguna untuk commit atau membatalkan. Aplikasi yang masih override onBackPressed() tanpa mendaftarkan callback akan merusak animasi ini.

DetailActivity.ktkotlin
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"
                )
            }
        }
    }
}

Prioritas baru PRIORITY_SYSTEM_NAVIGATION_OBSERVER memungkinkan aplikasi mengamati event back tanpa memblokir animasi sistem. Android 16 juga menambahkan finishAndRemoveTaskCallback dan moveTaskToBackCallback untuk perilaku back-stack kustom yang masih terintegrasi dengan animasi predictive.

Predictive back juga berfungsi pada navigasi 3-tombol di Android 16: menekan lama tombol back memulai animasi preview. Ini adalah topik wawancara yang sering muncul, kandidat yang hanya menyebutkan navigasi gesture kehilangan separuh cerita.

Notification Cooldown dan Pengelompokan Wajib

Dua perubahan notifikasi tambahan memengaruhi setiap aplikasi Android. Notification cooldown mengurangi volume alert untuk notifikasi beruntun dari aplikasi yang sama, secara bertahap menurunkan level suara selama sekitar 60 detik sebelum reset. Ini diaktifkan secara default dan tidak dapat di-override oleh pengembang.

Pengelompokan notifikasi wajib berarti sistem sekarang mengelompokkan notifikasi secara otomatis terlepas dari apakah aplikasi menggunakan setGroup(). Aplikasi yang mengandalkan keunggulan notifikasi individual untuk engagement mungkin perlu memikirkan ulang strategi notifikasi mereka.

Untuk persiapan wawancara, perubahan ini berpasangan baik dengan pertanyaan tentang Kotlin coroutines dan Flow, karena batching dan throttling notifikasi yang efisien sering melibatkan pola debouncing berbasis coroutine.

Health Connect FHIR APIs dan RangingManager

Android 16 memperluas Health Connect dengan dukungan penulisan FHIR (Fast Healthcare Interoperability Resources), memungkinkan aplikasi kesehatan untuk membuat dan menyimpan rekam medis terstruktur. API RangingManager menyatukan pengukuran jarak/sudut di seluruh BLE channel sounding, BLE RSSI, Ultra-Wideband, dan Wi-Fi RTT, mengkonsolidasikan apa yang sebelumnya membutuhkan empat surface API terpisah.

Photo picker mendapatkan API kustomisasi yang lebih dalam, memungkinkan pengembang mengontrol tampilan picker sambil mempertahankan model keamanan sandbox yang sama. Pencarian cloud media provider ditambahkan di Developer Preview 2.

API ini cenderung tidak muncul dalam wawancara Android umum tetapi sangat penting untuk peran spesifik domain di health tech, IoT, atau aplikasi yang berat media.

Pertanyaan dan Jawaban Wawancara Android 16

Berikut adalah pertanyaan yang paling mungkin muncul dalam wawancara pengembang Android, diambil dari perubahan perilaku dan API yang dibahas di atas.

T: Apa saja perubahan perilaku wajib saat menargetkan API 36? Tiga perubahan diberlakukan: rendering edge-to-edge (tanpa opt-out), pembatasan orientasi/resizability diabaikan pada layar >= 600dp, dan navigasi predictive back diaktifkan di seluruh sistem. Aplikasi harus menangani WindowInsets dengan benar, mendukung layout responsif, dan bermigrasi dari onBackPressed() ke OnBackInvokedCallback.

T: Bagaimana desktop mode memengaruhi arsitektur aplikasi? Desktop mode membuat sesi display independen. Aplikasi harus menghindari caching objek Display, mendukung metrik jendela dinamis, menangani input keyboard/mouse, dan mempertimbangkan skenario multi-instance. API ActivityOptions.launchDisplayId memungkinkan penargetan display spesifik secara programatis.

T: Kapan ProgressStyle menggantikan setProgress()? ProgressStyle untuk perjalanan pengguna multi-langkah dengan milestone berbeda (rideshare, pengiriman, navigasi). setProgress() standar tetap sesuai untuk progress operasi tunggal (unduhan file, upload). ProgressStyle mendapatkan visibilitas yang dipromosikan di notification shade.

T: Apa model rilis SDK major/minor Android 16? Rilis major (Maret 2025) berisi perubahan perilaku dan memerlukan pembaruan targetSdkVersion. Rilis minor (Desember 2025) menambahkan API baru tanpa perubahan perilaku, tidak perlu bump targetSdkVersion. Ini memisahkan stabilitas dari inovasi.

T: Bagaimana predictive back bekerja dengan navigasi 3-tombol? Pada API 36+, menekan lama tombol back pada navigasi 3-tombol memicu animasi predictive yang sama seperti navigasi gesture. Aplikasi harus mendaftarkan OnBackInvokedCallback dengan prioritas yang sesuai. Prioritas PRIORITY_SYSTEM_NAVIGATION_OBSERVER memungkinkan pengamatan tanpa mencegat.

Mulai berlatih!

Uji pengetahuan Anda dengan simulator wawancara dan tes teknis kami.

Sumber

Implikasi Android 16 untuk Wawancara Pengembang

  • Edge-to-edge tidak lagi opsional pada API 36. Audit semua layar untuk penanganan WindowInsets yang benar, terutama toolbar kustom dan bottom sheet.
  • Ganti manifest orientasi tetap dengan layout responsif Jetpack Compose menggunakan WindowSizeClass. Android 17 (API 37) telah menghapus opt-out.
  • Desktop mode siap produksi pada Pixel 8 ke atas dan flagship Samsung. Uji aplikasi dengan display eksternal, input keyboard, dan skenario multi-instance.
  • Migrasikan dari onBackPressed() ke OnBackInvokedCallback. Gunakan PRIORITY_SYSTEM_NAVIGATION_OBSERVER untuk pelacakan analytics tanpa memblokir animasi sistem.
  • Adopsi Notification.ProgressStyle untuk perjalanan pengguna multi-langkah apa pun. Notification cooldown dan pengelompokan wajib memengaruhi semua aplikasi terlepas dari target SDK.
  • Model SDK major/minor berarti perubahan perilaku datang sekali per tahun. SDK minor membawa API baru tanpa risiko kompatibilitas.

Mulai berlatih!

Uji pengetahuan Anda dengan simulator wawancara dan tes teknis kami.

Tantangan harian

Bisakah kamu menemukan bug di Android?

Satu potongan kode nyata, satu bug tersembunyi, satu percobaan per hari. Tanpa akun untuk mencoba.

Anthony Fillion-Maillet

Ditulis oleh

Anthony Fillion-Maillet

Pendiri SharpSkill

Developer fullstack selama lebih dari 10 tahun. Ia menjalankan SharpSkill dan bertanggung jawab atas semua yang diterbitkan di sini.

Diperbarui 21 September 2026

Tag

#android
#android-16
#mobile
#interview

Bagikan

Artikel terkait