Sejarah Android
Sejarah Android dimulai pada tahun 2003 ketika Andy Rubin bersama rekan-rekannya mendirikan Android Inc. di Palo Alto, California. Awalnya, Android dirancang sebagai sistem operasi untuk kamera digital, namun karena melihat potensi besar industri ponsel pintar, fokus pengembangannya dialihkan ke perangkat mobile. Pada tahun 2005, perusahaan ini diakuisisi oleh Google, yang kemudian mengembangkan Android menjadi sistem operasi berbasis Linux dengan konsep open-source.
Perjalanan sejarah perkembangan Android semakin kuat ketika Google membentuk Open Handset Alliance pada tahun 2007 untuk mendukung standar terbuka perangkat seluler. Setahun kemudian, smartphone Android pertama yaitu HTC Dream resmi diluncurkan ke pasar dan menjadi awal persaingan besar di industri smartphone. Android terus berkembang dengan berbagai pembaruan versi yang membawa peningkatan fitur, performa, serta keamanan, menjadikannya sistem operasi yang fleksibel dan mudah diadopsi oleh berbagai produsen.
Kini, Android menjadi sistem operasi mobile paling populer di dunia dan digunakan oleh berbagai merek ternama seperti Samsung, Xiaomi, dan banyak lainnya. Keunggulan Android terletak pada sifatnya yang terbuka, dukungan aplikasi yang luas melalui Google Play Store, serta inovasi berkelanjutan dalam bidang kecerdasan buatan dan keamanan. Melalui perjalanan panjangnya, sejarah Android membuktikan bagaimana sebuah inovasi teknologi mampu mengubah wajah industri komunikasi global secara signifikan.
Versi Android
Berikut ini adalah urutan versi Android dari awal hingga sekarang (tahun 2026) yang mencakup versi resmi yang dirilis Google dan yang diperkirakan tengah dalam siklus rilis:
📱 Daftar Versi Android (1.0 – 16, termasuk Android 17 Beta)
- Android 1.0 – Rilis 23 September 2008 (tanpa nama codename)
- Android 1.1 – Rilis 9 Februari 2009
- Android 1.5 Cupcake – 2009
- Android 1.6 Donut – 2009
- Android 2.0–2.1 Eclair – 2009
- Android 2.2 Froyo – 2010
- Android 2.3 Gingerbread – 2010
- Android 3.0–3.2 Honeycomb – 2011
- Android 4.0 Ice Cream Sandwich – 2011
- Android 4.1–4.3 Jelly Bean – 2012
- Android 4.4 KitKat – 2013
- Android 5.0–5.1 Lollipop – 2014
- Android 6.0 Marshmallow – 2015
- Android 7.0–7.1 Nougat – 2016
- Android 8.0–8.1 Oreo – 2017
- Android 9 Pie – 2018
- Android 10 – 2019
- Android 11 – 2020
- Android 12 – 2021
- Android 12L (12.1) – 2022
- Android 13 – 2022
- Android 14 – 2023
- Android 15 – 2024
- Android 16 – 2025
- Android 17 (Beta / Dalam pengembangan pada 2026) – Diperkirakan dirilis stabil di tahun 2026
Catatan:
- Android 10 dan yang lebih baru tidak lagi menggunakan nama makanan secara resmi, namun Google masih memiliki codename internal untuk masing-masing versi.
- Android 17 saat ini telah memasuki fase Beta di awal tahun 2026 sebelum dirilis secara penuh nanti.
Tujuan Diciptakannya Android
Berikut adalah beberapa alasan dan tujuan diciptakannya Android beserta penjelasannya secara lengkap:
1. Menciptakan Sistem Operasi Mobile yang Terbuka (Open-Source)
Salah satu alasan utama Android diciptakan adalah untuk menghadirkan sistem operasi berbasis open-source yang bisa digunakan dan dikembangkan oleh berbagai produsen perangkat. Setelah diakuisisi oleh Google, Android dikembangkan sebagai platform terbuka melalui dukungan Open Handset Alliance. Dengan konsep ini, produsen smartphone bebas memodifikasi dan menyesuaikan sistem sesuai kebutuhan perangkat mereka, sehingga mempercepat inovasi di industri mobile.
2. Menyaingi Dominasi Sistem Operasi Lain
Pada awal kemunculannya, pasar smartphone didominasi oleh Symbian, BlackBerry OS, dan kemudian iPhone dengan iOS milik Apple. Android diciptakan untuk menjadi alternatif yang fleksibel dan dapat digunakan oleh banyak produsen sekaligus, bukan eksklusif untuk satu merek saja. Strategi ini membuat Android cepat berkembang dan diadopsi secara luas oleh berbagai perusahaan teknologi dunia.
3. Mengembangkan Ekosistem Layanan Digital Google
Android juga diciptakan untuk memperluas ekosistem layanan Google seperti Gmail, Google Maps, YouTube, dan Play Store. Dengan hadirnya Android, Google dapat memastikan layanannya terintegrasi langsung dalam perangkat pengguna. Hal ini memperkuat posisi Google dalam industri periklanan digital, pencarian internet, dan distribusi aplikasi secara global.
4. Memberikan Akses Smartphone yang Lebih Terjangkau
Android dirancang agar dapat digunakan di berbagai spesifikasi perangkat, mulai dari kelas entry-level hingga flagship premium. Strategi ini memungkinkan produsen seperti Samsung, Xiaomi, dan lainnya memproduksi smartphone dengan harga yang lebih kompetitif. Dampaknya, masyarakat di berbagai negara dapat menikmati teknologi smartphone dengan harga yang lebih terjangkau.
5. Mendorong Inovasi Teknologi Mobile
Android diciptakan untuk menjadi platform yang terus berkembang. Sistem ini mendukung inovasi seperti layar sentuh penuh, widget interaktif, notifikasi real-time, kecerdasan buatan (AI), hingga dukungan perangkat lipat dan Internet of Things (IoT). Karena bersifat terbuka, para pengembang aplikasi juga dapat menciptakan berbagai inovasi baru yang memperkaya pengalaman pengguna.
Kesimpulan
Android diciptakan bukan hanya sebagai sistem operasi biasa, tetapi sebagai platform terbuka yang mendorong inovasi, memperluas ekosistem digital, serta memberikan akses teknologi yang lebih luas kepada masyarakat dunia. Dengan strategi tersebut, Android berhasil menjadi sistem operasi mobile paling dominan hingga saat ini.
Model Aplikasi Android
Model aplikasi Android adalah arsitektur dan pendekatan pengembangan aplikasi yang dirancang khusus untuk berjalan di sistem operasi Android. Model ini berbasis komponen (component-based architecture), di mana aplikasi tidak hanya terdiri dari satu program utama, tetapi terdiri dari beberapa komponen yang saling terhubung dan dikelola oleh sistem operasi Android itu sendiri.
Android dikembangkan oleh Google dan menggunakan kernel Linux sebagai fondasinya. Dalam model aplikasi Android, setiap aplikasi berjalan dalam sandbox (ruang terisolasi) untuk menjaga keamanan dan stabilitas sistem.
Komponen Utama Model Aplikasi Android
- Activity
Merepresentasikan satu tampilan layar (UI) yang berinteraksi dengan pengguna. - Service
Berjalan di latar belakang tanpa antarmuka pengguna, misalnya untuk memutar musik atau sinkronisasi data. - Broadcast Receiver
Menerima dan merespons pesan sistem atau aplikasi lain, seperti notifikasi baterai lemah. - Content Provider
Mengelola dan berbagi data antar aplikasi.
Selain itu, aplikasi Android menggunakan file AndroidManifest.xml untuk mendefinisikan izin (permission), komponen, dan konfigurasi aplikasi. Distribusi aplikasi dilakukan melalui Google Play Store atau file APK (Android Package).
Ciri-Ciri Model Aplikasi Android
- Berbasis komponen dan lifecycle (siklus hidup dikontrol sistem).
- Mendukung multitasking dan komunikasi antar aplikasi (Intent).
- Sistem keamanan berbasis permission dan sandbox.
- Distribusi digital melalui toko aplikasi.
- Sangat bergantung pada event (event-driven programming).
Perbedaan Model Aplikasi Android dan Model Aplikasi Tradisional
| Aspek | Model Aplikasi Android | Model Aplikasi Tradisional |
|---|---|---|
| Arsitektur | Berbasis komponen (Activity, Service, dll.) | Umumnya monolitik atau client-server |
| Instalasi | Melalui Play Store atau file APK | Instalasi manual melalui file installer |
| Manajemen Memori | Dikelola sistem Android secara otomatis | Dikelola oleh aplikasi atau sistem operasi desktop |
| Keamanan | Sandbox dan permission system | Bergantung pada sistem operasi dan jaringan internal |
| Distribusi | Digital & terpusat | Biasanya melalui CD, installer, atau jaringan lokal |
| Lingkungan | Mobile (smartphone/tablet) | Desktop atau server lokal |
Kesimpulan
Model aplikasi Android dirancang khusus untuk lingkungan mobile yang dinamis, ringan, dan berbasis komponen. Sistem ini memungkinkan aplikasi berjalan secara fleksibel dengan kontrol penuh dari sistem operasi. Sementara itu, model aplikasi tradisional lebih berorientasi pada instalasi lokal, infrastruktur internal, dan arsitektur yang cenderung statis.
Perbedaan utama keduanya terletak pada arsitektur, distribusi, serta cara pengelolaan sumber daya dan keamanan sistem.
Arsitektur Android
Arsitektur Android disusun dalam bentuk lapisan (layered architecture) yang terdiri dari lima lapisan utama. Setiap lapisan memiliki fungsi spesifik dan saling mendukung agar sistem operasi Android dapat berjalan dengan optimal di perangkat mobile.
Secara umum, urutan arsitektur Android dari atas ke bawah adalah:
- Applications
- Application Framework
- Libraries
- Android Runtime (ART)
- Linux Kernel
1. Applications (Lapisan Aplikasi)
Lapisan paling atas adalah Applications. Ini adalah aplikasi yang langsung digunakan oleh pengguna.
Contoh:
- Aplikasi Telepon
- SMS
- Browser
- Kamera
- WhatsApp, Instagram, dan aplikasi pihak ketiga lainnya
Semua aplikasi ini dibangun menggunakan Application Framework dan berjalan di atas Android Runtime. Setiap aplikasi berjalan dalam sandbox tersendiri untuk menjaga keamanan.
2. Application Framework
Lapisan ini menyediakan layanan dan API yang digunakan oleh pengembang untuk membuat aplikasi Android.
Komponen penting dalam Application Framework:
- Activity Manager → Mengatur siklus hidup aplikasi
- Window Manager → Mengelola tampilan layar
- Content Provider → Mengatur dan berbagi data antar aplikasi
- Resource Manager → Mengelola resource seperti string, layout, gambar
- Notification Manager → Mengatur sistem notifikasi
Framework ini memungkinkan pengembang tidak perlu mengatur detail tingkat rendah karena sudah disediakan oleh sistem.
3. Libraries (Native Libraries)
Lapisan ini berisi berbagai library berbasis C/C++ yang digunakan oleh sistem Android.
Beberapa library penting:
- SQLite → Database ringan untuk penyimpanan data
- WebKit → Engine untuk browser
- OpenGL ES → Untuk grafis 2D dan 3D
- Media Framework → Untuk audio dan video
- SSL → Keamanan komunikasi
Library ini membantu aplikasi berjalan lebih efisien dan cepat.
4. Android Runtime (ART)
Android Runtime (ART) adalah lingkungan eksekusi aplikasi Android.
Fungsinya:
- Menjalankan file .dex (Dalvik Executable)
- Mengelola memori
- Garbage Collection
- Mengoptimalkan performa aplikasi
Sebelumnya Android menggunakan Dalvik Virtual Machine (DVM), namun kini menggunakan ART yang lebih cepat dan efisien.
5. Linux Kernel
Lapisan paling bawah adalah Linux Kernel.
Kernel ini bertanggung jawab atas:
- Manajemen memori
- Manajemen proses
- Driver perangkat (kamera, WiFi, Bluetooth, layar)
- Manajemen keamanan
- Power management
Linux Kernel menjadi inti sistem yang menghubungkan perangkat keras (hardware) dengan perangkat lunak (software).
Kesimpulan
Arsitektur Android dirancang secara berlapis untuk memastikan sistem berjalan stabil, aman, dan efisien.
- Lapisan atas berfokus pada interaksi pengguna.
- Lapisan tengah menyediakan layanan dan runtime.
- Lapisan bawah mengelola perangkat keras dan sistem inti.
Struktur ini memungkinkan Android menjadi sistem operasi yang fleksibel, aman, dan mendukung jutaan aplikasi di berbagai perangkat.
Komponen Aplikasi Android
Berikut adalah penjelasan lengkap mengenai komponen utama dalam Aplikasi Android yang wajib dipahami oleh setiap developer:
1. Activity
Activity adalah komponen yang merepresentasikan satu tampilan layar (User Interface) dalam aplikasi Android.
Setiap activity biasanya mewakili satu halaman atau satu fitur tertentu. Misalnya:
- Halaman login
- Halaman dashboard
- Halaman detail produk
Ciri-Ciri Activity:
- Memiliki siklus hidup (lifecycle) seperti
onCreate(),onStart(),onResume(),onPause(),onStop(), danonDestroy() - Berinteraksi langsung dengan pengguna
- Dikelola oleh Activity Manager dalam sistem Android
Contoh sederhana: Saat pengguna membuka aplikasi, sistem menjalankan activity utama (MainActivity).
2. Intent
Intent adalah mekanisme komunikasi antar komponen dalam Android. Intent digunakan untuk:
- Berpindah dari satu activity ke activity lain
- Menjalankan service
- Mengirim broadcast
Jenis Intent:
- Explicit Intent → Digunakan untuk memanggil komponen yang spesifik (misalnya berpindah ke activity tertentu dalam satu aplikasi).
- Implicit Intent → Digunakan untuk meminta sistem menjalankan komponen yang sesuai dengan aksi tertentu (misalnya membuka browser untuk mengakses URL).
Contoh penggunaan:
- Membuka kamera
- Mengirim email
- Membuka Google Maps
Intent membuat sistem Android bersifat fleksibel dan saling terintegrasi.
3. Service
Service adalah komponen yang berjalan di latar belakang (background) tanpa antarmuka pengguna (tanpa UI).
Service digunakan untuk proses yang berjalan terus-menerus, seperti:
- Memutar musik
- Sinkronisasi data
- Mengunduh file
- Mengakses API secara berkala
Jenis Service:
- Started Service → Berjalan sampai dihentikan secara manual
- Bound Service → Berjalan selama terhubung dengan komponen lain
Service memungkinkan aplikasi tetap bekerja meskipun pengguna tidak sedang membuka aplikasinya.
4. Content Provider
Content Provider adalah komponen yang digunakan untuk mengelola dan membagikan data antar aplikasi.
Misalnya:
- Mengakses kontak telepon
- Mengakses galeri foto
- Berbagi database antar aplikasi
Content Provider biasanya menggunakan SQLite sebagai database internal, dan diakses melalui URI (Uniform Resource Identifier).
Keunggulannya:
- Data lebih aman
- Akses diatur melalui permission
- Mendukung pertukaran data antar aplikasi
5. Broadcast Receiver
Broadcast Receiver adalah komponen yang menerima dan merespons pesan siaran (broadcast message) dari sistem atau aplikasi lain.
Contoh broadcast dari sistem:
- Baterai lemah
- Mode pesawat aktif
- Perangkat selesai booting
- SMS masuk
Aplikasi dapat:
- Mendaftarkan receiver di AndroidManifest.xml
- Atau mendaftarkannya secara dinamis melalui kode program
Broadcast Receiver biasanya tidak memiliki tampilan UI dan hanya aktif ketika menerima pesan tertentu.
Ringkasan Komponen Aplikasi Android
| Komponen | Fungsi Utama |
|---|---|
| Activity | Mengatur tampilan dan interaksi pengguna |
| Intent | Media komunikasi antar komponen |
| Service | Menjalankan proses di latar belakang |
| Content Provider | Mengelola dan berbagi data |
| Broadcast Receiver | Menerima pesan dari sistem atau aplikasi lain |
Kesimpulan
Kelima komponen ini membentuk fondasi utama arsitektur aplikasi Android.
- Activity menangani tampilan.
- Intent menghubungkan komponen.
- Service menjalankan proses background.
- Content Provider mengelola data.
- Broadcast Receiver merespons event sistem.
Memahami komponen-komponen ini sangat penting untuk membangun aplikasi Android yang terstruktur, efisien, dan sesuai standar pengembangan resmi.
Struktur Aplikasi Android
Secara umum, struktur aplikasi Android terdiri dari beberapa folder dan file utama yang memiliki fungsi masing-masing. Struktur ini dapat dilihat di dalam direktori project Android Studio.
1. Manifests
📄 AndroidManifest.xml
File inti yang berisi informasi penting tentang aplikasi.
Fungsi:
- Mendeklarasikan nama paket (package name)
- Mendefinisikan komponen aplikasi (Activity, Service, Broadcast Receiver, Content Provider)
- Mengatur permission (izin akses seperti internet, kamera, lokasi)
- Menentukan activity utama (launcher activity)
- Menentukan minimum SDK dan target SDK
File ini wajib ada karena menjadi identitas dan konfigurasi utama aplikasi.
2. Java / Kotlin (Source Code)
Berisi kode program utama aplikasi yang ditulis menggunakan bahasa Java atau Kotlin.
📁 Struktur umum:
MainActivity.kt/MainActivity.java- Class tambahan (LoginActivity, DatabaseHelper, dll)
Fungsi:
- Mengatur logika aplikasi
- Mengontrol tampilan (UI)
- Mengelola interaksi pengguna
- Menghubungkan data dengan tampilan
Ini adalah bagian inti dari proses pengembangan aplikasi Android.
3. Res (Resources)
Folder res berisi seluruh resource non-kode seperti layout, gambar, warna, dan string.
📁 Item di dalam folder res:
a. layout
Berisi file XML untuk desain tampilan antarmuka.
Contoh:
activity_main.xml
Fungsi:
- Mengatur posisi tombol, teks, gambar, dan komponen UI lainnya
b. drawable
Berisi file gambar atau desain grafis.
Contoh:
- File PNG, JPG
- Vector drawable (XML)
Fungsi:
- Menyimpan ikon, background, ilustrasi
c. values
Berisi file konfigurasi nilai.
Contoh:
strings.xml→ Menyimpan tekscolors.xml→ Menyimpan warnastyles.xml/themes.xml→ Mengatur tema aplikasi
Fungsi:
- Memisahkan nilai statis dari kode program
- Mendukung multi-bahasa (localization)
d. mipmap
Berisi ikon launcher aplikasi.
Fungsi:
- Menyimpan ikon aplikasi untuk berbagai resolusi layar
4. Gradle Scripts
Digunakan untuk konfigurasi build aplikasi.
📄 Contoh:
build.gradle (Module)build.gradle (Project)
Fungsi:
- Menentukan versi SDK
- Menambahkan dependency/library
- Mengatur konfigurasi build (debug/release)
Gradle mengatur proses kompilasi dan pembuatan file APK atau AAB.
5. Assets (Opsional)
Folder untuk menyimpan file mentah (raw file).
Contoh:
- File HTML
- Font custom
- File JSON
- Database awal
Perbedaannya dengan res:
- File di assets tidak memiliki ID resource otomatis
- Diakses menggunakan AssetManager
6. Libs (Opsional)
Berisi library eksternal dalam bentuk file .jar atau .aar jika tidak menggunakan dependency online.
Ringkasan Struktur Aplikasi Android
| Item | Keterangan |
|---|---|
| AndroidManifest.xml | Konfigurasi dan deklarasi komponen aplikasi |
| Java/Kotlin | Kode program utama |
| res/layout | Desain tampilan UI |
| res/drawable | Gambar dan grafis |
| res/values | String, warna, style |
| mipmap | Ikon aplikasi |
| Gradle Scripts | Konfigurasi build dan dependency |
| assets | File mentah tambahan |
| libs | Library eksternal |
Kesimpulan
Struktur aplikasi Android dirancang agar terorganisir, modular, dan mudah dikembangkan. Pemisahan antara kode program dan resource membuat aplikasi lebih rapi, mudah dirawat, dan mendukung berbagai ukuran layar serta bahasa.
Memahami struktur ini sangat penting sebelum mulai mengembangkan aplikasi Android secara profesional.
File Manifest
AndroidManifest.xml adalah file inti yang wajib ada di setiap aplikasi Android. File ini berada di folder manifests pada project Android Studio dan berfungsi sebagai identitas aplikasi sekaligus pengatur konfigurasi dasar. Tanpa file ini, sistem Android tidak bisa mengenali aplikasi dan komponennya.
Fungsi Utama File Manifest
- Mendeklarasikan Package Name
- Package name unik yang digunakan sebagai identitas aplikasi.
- Contoh:
com.example.myapp - Package name ini juga digunakan untuk distribusi di Google Play Store.
- Mendeklarasikan Komponen Aplikasi
File manifest berisi semua komponen utama aplikasi, seperti:- Activity – layar utama atau fitur aplikasi.
- Service – proses yang berjalan di latar belakang.
- Content Provider – untuk mengelola dan berbagi data antar aplikasi.
- Broadcast Receiver – untuk menerima pesan dari sistem atau aplikasi lain.
<intent-filter>
<action android:name=”android.intent.action.MAIN”/>
<category android:name=”android.intent.category.LAUNCHER”/>
</intent-filter>
</activity> - Menentukan Permission / Izin
- Mengatur akses aplikasi ke fitur perangkat keras atau layanan penting.
- Contoh: <uses-permission android:name=”android.permission.INTERNET”/>
<uses-permission android:name=”android.permission.CAMERA”/> - Android 6.0 ke atas juga mendukung permission runtime untuk keamanan lebih.
- Menentukan Minimum dan Target SDK
- Memberi tahu sistem versi Android minimum yang didukung aplikasi dan versi target pengembangan.
- Contoh: <uses-sdk android:minSdkVersion=”21″
android:targetSdkVersion=”33″/>
- Deklarasi Fitur dan Hardware
- Menentukan fitur hardware yang diperlukan, misalnya kamera atau sensor GPS.
- Contoh: <uses-feature android:name=”android.hardware.camera”/>
<uses-feature android:name=”android.hardware.location.gps”/>
- Menentukan Tema dan Style Global
- File manifest dapat menentukan tema default aplikasi.
- Contoh: <application
android:theme=”@style/AppTheme”
android:icon=”@mipmap/ic_launcher”
android:label=”@string/app_name”>
</application>
- Menentukan Library Eksternal
- File manifest juga dapat mendeklarasikan dependensi library yang memerlukan izin khusus atau fitur tertentu.
Struktur Umum File Manifest
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp"> <!-- Izin / Permission -->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA"/> <!-- Minimum SDK dan Target SDK -->
<uses-sdk android:minSdkVersion="21"
android:targetSdkVersion="33"/> <!-- Deklarasi Application -->
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"> <!-- Deklarasi Activity -->
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity> <!-- Deklarasi Service -->
<service android:name=".MyService"/> <!-- Deklarasi Broadcast Receiver -->
<receiver android:name=".MyReceiver"/>
<!-- Deklarasi Content Provider -->
<provider android:name=".MyProvider"
android:authorities="com.example.myapp.provider"
android:exported="true"/>
</application></manifest>
Kesimpulan
AndroidManifest.xml adalah pusat konfigurasi aplikasi Android. Fungsinya meliputi:
- Menentukan identitas aplikasi (package name)
- Mendeklarasikan semua komponen aplikasi (activity, service, content provider, broadcast receiver)
- Mengatur izin akses perangkat keras dan data pengguna
- Menentukan versi Android minimum dan target
- Mengatur tema dan ikon aplikasi
File manifest memastikan aplikasi dapat dikenali oleh sistem Android, beroperasi dengan benar, dan dapat terintegrasi dengan fitur perangkat. Tanpa file ini, aplikasi tidak dapat dijalankan di Android.
Back Stack
Back Stack adalah mekanisme manajemen urutan Activity di Android yang memungkinkan pengguna kembali ke Activity sebelumnya ketika menekan tombol “Back” pada perangkat.
Setiap kali pengguna membuka Activity baru, Android menempatkan Activity tersebut di atas tumpukan (stack). Activity yang terakhir dibuka berada di atas, sedangkan Activity sebelumnya tetap berada di bawah. Ini mengikuti prinsip Last In, First Out (LIFO), seperti tumpukan buku: buku terakhir yang diletakkan di atas akan diambil pertama.
Cara Kerja Back Stack
- Saat aplikasi dijalankan, Activity pertama (MainActivity) ditempatkan di back stack.
- Jika pengguna membuka Activity kedua (SecondActivity), Android menempatkan activity baru ini di atas stack.
- Menekan tombol “Back” akan menghapus (pop) activity di atas stack dan menampilkan activity di bawahnya.
- Proses ini berulang untuk setiap activity yang dibuka.
Contoh urutan:
[MainActivity] <- Bottom (pertama)
[SecondActivity] <- Top (terakhir dibuka)
Jika pengguna menekan tombol Back:
- SecondActivity dihapus dari stack → MainActivity muncul kembali
Manfaat Back Stack
- Memudahkan navigasi antar activity tanpa harus membuat logika manual.
- Menyediakan pengalaman pengguna yang konsisten dengan prinsip “Back” di Android.
- Memungkinkan multi-tasking sederhana di level Activity.
Pengaturan Back Stack
Android menyediakan beberapa cara untuk mengatur back stack:
- Default Behavior
- Android otomatis menambahkan activity baru ke top stack.
- Intent Flags
FLAG_ACTIVITY_CLEAR_TOP→ Menghapus activity di atas activity tertentu.FLAG_ACTIVITY_NEW_TASK→ Membuat activity baru di task baru.
- Task & Affinity
- Digunakan untuk mengelompokkan activity dalam satu task agar back stack lebih terkontrol.
Diagram Sederhana Back Stack
1. Buka MainActivity
Stack: [MainActivity]2. Buka SecondActivity
Stack: [MainActivity, SecondActivity]3. Tekan Back
Stack: [MainActivity]
Kesimpulan
Back Stack adalah mekanisme penting untuk navigasi antar Activity di Android.
- Memanfaatkan prinsip LIFO (Last In, First Out).
- Menjamin pengguna dapat kembali ke halaman sebelumnya dengan mudah.
- Bisa dikontrol melalui intent flags dan task management untuk kebutuhan navigasi yang lebih kompleks.
Masa Hidup Activity
Masa hidup Activity adalah siklus hidup setiap Activity dari saat dibuat hingga dihancurkan. Android menggunakan Activity Lifecycle untuk mengatur status Activity, mengelola memori, dan menjaga pengalaman pengguna tetap konsisten.
Setiap Activity memiliki beberapa state dan callback method yang dijalankan secara otomatis oleh sistem Android.
1. State dan Callback Utama
a. onCreate()
- Dipanggil ketika Activity pertama kali dibuat.
- Digunakan untuk:
- Menginisialisasi UI (
setContentView) - Menyiapkan variabel, listener, dan resource lain
- Menginisialisasi UI (
Contoh:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
b. onStart()
- Dipanggil ketika Activity mulai terlihat oleh pengguna, tapi belum interaktif sepenuhnya.
- Cocok untuk menyiapkan resource yang dibutuhkan saat Activity terlihat.
c. onResume()
- Dipanggil ketika Activity sudah siap berinteraksi dengan pengguna.
- Activity berada di foreground.
- Contoh penggunaan: memulai animasi, menerima input, atau memulai sensor.
d. onPause()
- Dipanggil ketika Activity tidak lagi menjadi fokus utama, misalnya saat Activity lain muncul sebagian atau layar mati.
- Digunakan untuk:
- Menyimpan data sementara
- Menghentikan animasi atau sensor yang tidak perlu
- Melepaskan resource yang berat
e. onStop()
- Dipanggil ketika Activity tidak terlihat sama sekali.
- Digunakan untuk:
- Melepaskan resource berat
- Menghentikan proses background yang terkait Activity
f. onRestart()
- Dipanggil ketika Activity yang sudah dihentikan (
onStop()) akan dilanjutkan kembali. - Biasanya diikuti oleh
onStart().
g. onDestroy()
- Dipanggil ketika Activity dihancurkan, baik karena pengguna menutup aplikasi atau sistem membebaskan memori.
- Digunakan untuk:
- Membersihkan resource
- Menutup database
- Menghentikan thread atau service terkait Activity
2. Diagram Sederhana Lifecycle Activity
onCreate()
↓
onStart()
↓
onResume() ← Activity aktif dan interaktif
↑
onPause() ← Activity kehilangan fokus
↓
onStop() ← Activity tidak terlihat
↑
onRestart() ← Activity akan ditampilkan kembali
↓
onDestroy() ← Activity dihancurkan
3. Ringkasan Fungsi Tiap Callback
| Callback | Fungsi Utama |
|---|---|
| onCreate() | Inisialisasi Activity dan UI |
| onStart() | Activity mulai terlihat |
| onResume() | Activity siap untuk interaksi |
| onPause() | Simpan data sementara, hentikan aktivitas ringan |
| onStop() | Hentikan resource berat, Activity tidak terlihat |
| onRestart() | Activity yang dihentikan akan dilanjutkan |
| onDestroy() | Membersihkan resource dan menghancurkan Activity |
4. Kesimpulan
Lifecycle Activity membantu pengembang mengelola resource, navigasi, dan pengalaman pengguna dengan efisien.
- Sistem Android memanggil callback sesuai state Activity.
- Pengembang dapat menaruh kode di callback yang tepat untuk menghemat memori, meningkatkan performa, dan mencegah crash.
- Memahami lifecycle sangat penting untuk aplikasi yang kompleks, terutama yang menggunakan sensor, animasi, database, atau proses background.