Siklus Hidup dalam Pengembangan Seluler: apa itu, tahapan apa saja dan cara kerjanya

Penulis: IT Sectr Diterbitkan: 2026-03-02 Waktu membaca: 9 mnt

Siklus hidup aplikasi seluler menentukan bagaimana perilaku aplikasi saat diluncurkan, diminimalkan, kembali dari latar belakang, dan ditutup. Dalam artikel ini, kita akan membahas App Lifecycle (iOS), Activity Lifecycle (Android), Fragment Lifecycle, ViewController Lifecycle dan LifecycleOwner. Memahami proses-proses ini sangat penting untuk mencegah kebocoran memori, kehilangan data, dan perilaku aplikasi yang tidak benar. Detail lebih lanjut di dokumentasi resmi Android Activity Lifecycle.

Poin Penting

  • Activity Lifecycle (Android) mencakup 7 metode: onCreate → onStart → onResume → onPause → onStop → onDestroy + onRestart
  • ViewController Lifecycle (iOS) dipanggil secara berurutan: viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear
  • iOS App Lifecycle memiliki 5 status: Not Running, Inactive, Active, Background, Suspended
  • Fragment Lifecycle terikat dengan Activity tetapi memiliki metode sendiri: onAttach, onCreateView, onViewCreated
  • LifecycleOwner (Android) memungkinkan berlangganan ke peristiwa siklus hidup melalui LifecycleObserver

Siklus Hidup Aplikasi (App Lifecycle)

Sebelum membahas siklus hidup layar individu, penting untuk memahami siklus hidup seluruh aplikasi. Di iOS, aplikasi melewati lima status: Not Running (tidak berjalan), Inactive (di latar belakang, tidak menerima peristiwa), Active (aktif), Background (di latar belakang, kode dijalankan) dan Suspended (di latar belakang, kode dijeda). Status-status ini dikelola di AppDelegate melalui metode applicationDidFinishLaunching, applicationDidBecomeActive, applicationWillResignActive, applicationDidEnterBackground dan applicationWillTerminate.

Di Android, padanannya adalah Application Lifecycle, yang dilacak melalui antarmuka Application.ActivityLifecycleCallbacks. Namun, Android lebih fokus pada siklus hidup sebuah Activity — layar aplikasi individual. Ini karena aplikasi Android dapat terdiri dari beberapa Activity, masing-masing dengan siklusnya sendiri.

Pendekatan modern di Android adalah menggunakan ProcessLifecycleOwner dari pustaka lifecycle-process. Ini memungkinkan pelacakan status seluruh proses tanpa terikat pada Activity tertentu. Di iOS, UISceneDelegate (sejak iOS 13) atau AppDelegate digunakan untuk melacak status aplikasi. SceneDelegate menangani beberapa jendela (multiwindow) di iPad. Memahami App Lifecycle sangat penting bagi IT Sectr saat mengembangkan aplikasi dengan sinkronisasi latar belakang, streaming, dan panggilan VoIP.

Activity Lifecycle di Android

Activity adalah komponen dasar aplikasi Android yang mewakili satu layar. Activity memiliki siklus hidup yang didefinisikan dengan jelas yang dikelola oleh sistem operasi sebagai respons terhadap tindakan pengguna dan peristiwa sistem (rotasi layar, panggilan masuk, memori rendah).

MetodeDeskripsiApa yang Harus Dilakukan
onCreateDipanggil sekali saat Activity dibuatInisialisasi UI, findViewById, pengaturan ViewModel
onStartActivity menjadi terlihatMulai animasi, daftarkan BroadCastReceiver
onResumeActivity mendapatkan fokus inputMulai kamera, sensor, animasi
onPauseActivity kehilangan fokus (sebagian terlihat)Simpan draf, hentikan animasi
onStopActivity tidak terlihatBebaskan sumber daya, hentikan pembaruan
onDestroyActivity dihancurkanBersihkan semua referensi, berhenti berlangganan LiveData
onRestartDipanggil sebelum onStart setelah onStopInisialisasi ulang

Penting: onSaveInstanceState dipanggil sebelum onStop untuk menyimpan status sementara. Pemulihan terjadi di onCreate melalui Bundle savedInstanceState atau melalui SavedStateHandle di ViewModel. Tanpa penanganan siklus hidup yang tepat, aplikasi akan kehilangan semua data yang belum disimpan saat rotasi layar.

kotlin
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putString("draft", draftText)
    }
    override fun onDestroy() {
        super.onDestroy()
        // Отписка от всех подписок
    }
}

Activity Lifecycle di Jetpack Compose

Di Jetpack Compose, siklus hidup Activity tetap tidak berubah, tetapi Compose menyediakan alat tambahan: Komposisi sadar siklus hidup melalui LifecycleOwner, efek LifecycleEventEffect dan DisposableEffect untuk pembersihan sumber daya otomatis saat penghancuran.

Fragment Lifecycle Secara Detail

Fragment di Android hidup di dalam Activity dan memiliki siklus hidup sendiri, yang sebagian tumpang tindih dengan Activity tetapi menambahkan metode baru. Fragment dapat ditambahkan, diganti, dihapus tanpa menghancurkan Activity, membuatnya lebih fleksibel tetapi juga lebih kompleks.

Metode utama Fragment Lifecycle: onAttach — Fragment dilampirkan ke Activity (panggilan pertama); onCreate — inisialisasi data; onCreateView — pembuatan View; onViewCreated — View dibuat, UI dapat dikonfigurasi; onStart — Fragment terlihat; onResume — Fragment dalam fokus; onPause — Fragment kehilangan fokus; onStop — Fragment tidak terlihat; onDestroyView — View dihancurkan; onDestroy — Fragment dihancurkan; onDetach — Fragment terlepas dari Activity.

Perbedaan utama dari Activity: onCreateView dan onDestroyView dapat dipanggil beberapa kali (misalnya, saat mengganti TabLayout), sementara onCreate dipanggil sekali. Oleh karena itu, inisialisasi View harus dilakukan di onViewCreated, bukan di onCreateView. Sumber daya yang terkait dengan View (seperti adaptor RecyclerView) harus dibersihkan di onDestroyView.

ViewController Lifecycle di iOS

UIViewController adalah kelas dasar untuk mengelola layar di iOS. Siklus hidupnya terdiri dari serangkaian metode yang dipanggil UIKit secara otomatis. Memahami siklus ini sangat penting untuk inisialisasi UI yang benar, manajemen data, dan penanganan memori.

MetodeKapan DipanggilPenggunaan Umum
loadViewSaat View Controller memuat hierarki ViewInisialisasi kustom tanpa storyboard
viewDidLoadSetelah View dimuat ke memori (sekali)Pengaturan UI, memuat data awal
viewWillAppearSebelum View muncul di layarPerbarui data, berlangganan notifikasi
viewDidAppearSetelah View muncul di layarMulai animasi, mulai animasi pelacakan
viewWillDisappearSebelum View menghilang dari layarSimpan status, berhenti berlangganan notifikasi
viewDidDisappearSetelah View menghilang dari layarHentikan animasi, bebaskan sumber daya
deallocSaat View Controller dihancurkanBebaskan semua sumber daya

Penting: viewDidLoad dipanggil hanya sekali dalam masa hidup View Controller. Untuk memperbarui data setiap kali tampil, gunakan viewWillAppear. Jika Anda berlangganan NotificationCenter di viewWillAppear, pastikan untuk berhenti berlangganan di viewDidDisappear untuk menghindari kebocoran memori.

SwiftUI Lifecycle

SwiftUI mengelola siklus hidup View melalui struktur View. Alih-alih metode callback, SwiftUI menggunakan pengubah onAppear dan onDisappear. Untuk status aplikasi global, App Lifecycle digunakan melalui protokol App dan Scene. SwiftUI secara otomatis mengelola pembuatan dan penghancuran View berdasarkan status, yang menyederhanakan pengembangan tetapi membutuhkan pemahaman tentang identitas dan masa pakai View.

swift
struct ContentView: View {
    var body: some View {
        Text("Hello")
            .onAppear {
                print("View появилась")
            }
            .onDisappear {
                print("View исчезла")
            }
    }
}

LifecycleOwner dan LifecycleObserver di Android

LifecycleOwner adalah antarmuka dari Android Architecture Components yang menandai objek yang memiliki siklus hidup (Activity, Fragment). LifecycleObserver adalah antarmuka yang memungkinkan objek untuk berlangganan peristiwa LifecycleOwner. Bersama-sama mereka membentuk dasar manajemen siklus hidup reaktif dalam pengembangan Android modern.

Alih-alih memanggil metode secara eksplisit di onStart/onStop, disarankan untuk menggunakan DefaultLifecycleObserver (pengganti LifecycleObserver yang sudah tidak digunakan lagi dengan anotasi @OnLifecycleEvent). Ini adalah pendekatan yang dipromosikan Google untuk ViewModel dan komponen lain yang perlu bereaksi terhadap siklus hidup tanpa memiliki referensi langsung ke Activity atau Fragment.

kotlin
class MyObserver : DefaultLifecycleObserver {
    override fun onStart(owner: LifecycleOwner) {
        // Подписка на обновления
    }
    override fun onStop(owner: LifecycleOwner) {
        // Отписка
    }
}

Di IT Sectr, kami menggunakan LifecycleOwner di semua proyek Android. ViewModel berlangganan LifecycleOwner Activity melalui viewModelScope dan lifecycleScope, menjamin pembatalan otomatis coroutine saat Activity dihancurkan. Ini mencegah kebocoran memori dan membuat kode lebih bersih dan aman.

Pertanyaan Umum

Status apa saja yang dilalui Activity di Android?

Activity melewati enam status: Created (onCreate), Started (onStart), Resumed (onResume), Paused (onPause), Stopped (onStop), Destroyed (onDestroy).

Dalam urutan apa metode ViewController Lifecycle dipanggil di iOS?

Urutan: loadView → viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear. viewDidLoad dipanggil sekali.

Apa itu LifecycleOwner di Android?

LifecycleOwner adalah komponen Android Architecture Components yang memiliki siklus hidup Activity atau Fragment. Memungkinkan berlangganan peristiwa melalui LifecycleObserver.

Status apa saja yang dimiliki App Lifecycle di iOS?

Aplikasi iOS melewati lima status: Not Running, Inactive, Active, Background, Suspended. Transisi dikelola melalui UIApplicationDelegate.

Apa itu Saved State di Android?

Saved State adalah mekanisme Android untuk mempertahankan status Activity/Fragment saat rotasi layar atau pembuatan ulang proses. Menggunakan onSaveInstanceState dan SavedStateHandle.

Ringkasan

  • Activity Lifecycle di Android (onCreate → onDestroy) — dasar manajemen status layar
  • iOS ViewController Lifecycle (viewDidLoad → viewDidDisappear) — kunci pengoperasian UIKit yang benar
  • Fragment Lifecycle lebih kompleks dari Activity karena onAttach/onDetach dan onCreateView/onDestroyView
  • LifecycleOwner (Android) memungkinkan berlangganan reaktif ke peristiwa tanpa kebocoran memori
  • App Lifecycle mengelola status seluruh aplikasi (Active, Background, Suspended)
  • SwiftUI menggunakan onAppear dan onDisappear alih-alih metode ViewController tradisional
  • Penanganan siklus hidup yang tepat mencegah hingga 80% crash aplikasi seluler yang umum

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek