Mobil geliştirmede yaşam döngüsü: nedir, hangi aşamalar ve nasıl çalışır

Yazar: IT Sectr Yayınlanma: 2026-03-02 Okuma süresi: 9 dk

Mobil uygulamanın yaşam döngüsü, uygulamanın başlatılma, küçültülme, arka plandan dönme ve kapanma sırasında nasıl davrandığını belirler. Bu makalede App Lifecycle (iOS), Activity Lifecycle (Android), Fragment Lifecycle, ViewController Lifecycle ve LifecycleOwner'ı inceleyeceğiz. Bu süreçleri anlamak, bellek sızıntılarını, veri kaybını ve uygulamanın hatalı çalışmasını önlemek için kritik öneme sahiptir. Daha fazla detay için resmi Android Activity Lifecycle dokümantasyonuna bakın.

Önemli noktalar

  • Activity Lifecycle (Android) 7 metod içerir: onCreate → onStart → onResume → onPause → onStop → onDestroy + onRestart
  • ViewController Lifecycle (iOS) şu sırayla çağrılır: viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear
  • iOS App Lifecycle 5 duruma sahiptir: Not Running, Inactive, Active, Background, Suspended
  • Fragment Lifecycle Activity'ye bağlıdır ancak kendi metodlarına sahiptir: onAttach, onCreateView, onViewCreated
  • LifecycleOwner (Android), LifecycleObserver aracılığıyla yaşam döngüsü olaylarına abone olmayı sağlar

Uygulama yaşam döngüsü (App Lifecycle)

Tek tek ekranların yaşam döngüsüne geçmeden önce, tüm uygulamanın yaşam döngüsünü anlamak önemlidir. iOS'te uygulama beş durumdan geçer: Not Running (çalışmıyor), Inactive (arka planda, olay almıyor), Active (aktif), Background (arka planda, kod çalışıyor) ve Suspended (arka planda, kod askıya alınmış). Bu durumlar AppDelegate'te applicationDidFinishLaunching, applicationDidBecomeActive, applicationWillResignActive, applicationDidEnterBackground ve applicationWillTerminate metodları aracılığıyla yönetilir.

Android'de bunun karşılığı, Application.ActivityLifecycleCallbacks arayüzü aracılığıyla izlenen Application Lifecycle'dır. Ancak Android, daha çok bir Activity'nin — tek bir uygulama ekranının — yaşam döngüsüne odaklanır. Bunun nedeni, bir Android uygulamasının her biri kendi döngüsüne sahip birden çok Activity'den oluşabilmesidir.

Android'de modern yaklaşım, lifecycle-process kütüphanesinden ProcessLifecycleOwner kullanmaktır. Belirli bir Activity'ye bağlı kalmadan tüm sürecin durumunu izlemeye olanak tanır. iOS'te, uygulama durumunu izlemek için UISceneDelegate (iOS 13'ten itibaren) veya AppDelegate kullanılır. SceneDelegate, iPad'de birden çok pencereyi (multiwindow) yönetir. App Lifecycle'ı anlamak, IT Sectr için arka plan senkronizasyonu, akış ve VoIP aramaları olan uygulamalar geliştirirken özellikle önemlidir.

Android'de Activity Lifecycle

Activity, bir Android uygulamasının temel bileşenidir ve bir ekranı temsil eder. Activity'nin, kullanıcı eylemlerine ve sistem olaylarına (ekran döndürme, gelen çağrı, düşük bellek) yanıt olarak işletim sistemi tarafından yönetilen açıkça tanımlanmış bir yaşam döngüsü vardır.

Metod Açıklama Ne yapmalı
onCreateActivity oluşturulduğunda bir kez çağrılırUI başlatma, findViewById, ViewModel kurulumu
onStartActivity görünür hale gelirAnimasyonları başlat, BroadCastReceiver kaydet
onResumeActivity giriş odağını alırKamera, sensörler, animasyonları başlat
onPauseActivity odağı kaybeder (kısmen görünür)Taslakları kaydet, animasyonları durdur
onStopActivity görünmezKaynakları serbest bırak, güncellemeleri durdur
onDestroyActivity yok edilirTüm referansları temizle, LiveData aboneliğini iptal et
onRestartonStop'tan sonra onStart'tan önce çağrılırYeniden başlatma

Önemli: onSaveInstanceState, geçici durumu kaydetmek için onStop'tan önce çağrılır. Geri yükleme, onCreate'te Bundle savedInstanceState aracılığıyla veya ViewModel'de SavedStateHandle aracılığıyla gerçekleşir. Yaşam döngüsü düzgün yönetilmezse, ekran döndürüldüğünde uygulama kaydedilmemiş tüm verileri kaybeder.

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()
        // Отписка от всех подписок
    }
}

Jetpack Compose'da Activity Lifecycle

Jetpack Compose'da Activity yaşam döngüsü değişmez, ancak Compose ek araçlar sağlar: LifecycleOwner aracılığıyla Yaşam döngüsü bilincinde kompozisyon, yok edilme sırasında otomatik kaynak temizliği için LifecycleEventEffect ve DisposableEffect efektleri.

Fragment Lifecycle detaylı

Android'de Fragment, bir Activity'nin içinde yaşar ve kendi yaşam döngüsüne sahiptir. Bu, Activity ile kısmen örtüşür ancak yeni metodlar ekler. Fragment'ler, Activity'yi yok etmeden eklenebilir, değiştirilebilir, kaldırılabilir, bu da onları daha esnek ancak daha karmaşık hale getirir.

Fragment Lifecycle'ın temel metodları: onAttach — Fragment Activity'ye eklendi (ilk çağrı); onCreate — veri başlatma; onCreateView — View oluşturma; onViewCreated — View oluşturuldu, UI yapılandırılabilir; onStart — Fragment görünür; onResume — Fragment odakta; onPause — Fragment odağı kaybeder; onStop — Fragment görünmez; onDestroyView — View yok edilir; onDestroy — Fragment yok edilir; onDetach — Fragment Activity'den ayrılır.

Activity'den temel fark: onCreateView ve onDestroyView birden çok kez çağrılabilir (örneğin, TabLayout değiştirirken), oysa onCreate bir kez çağrılır. Bu nedenle, View başlatması onCreateView'da değil, onViewCreated'da yapılmalıdır. View ile ilgili kaynaklar (RecyclerView bağdaştırıcıları gibi) onDestroyView'da temizlenmelidir.

iOS'te ViewController Lifecycle

UIViewController, iOS'te ekranları yönetmek için temel sınıftır. Yaşam döngüsü, UIKit'in otomatik olarak çağırdığı bir dizi metoddan oluşur. Bu döngüyü anlamak, doğru UI başlatması, veri yönetimi ve bellek işleme için kritik öneme sahiptir.

Metod Ne zaman çağrılır Tipik kullanım
loadViewView Controller View hiyerarşisini yüklediğindeStoryboard olmadan özel başlatma
viewDidLoadView belleğe yüklendikten sonra (bir kez)UI kurulumu, ilk verileri yükleme
viewWillAppearView ekranda görünmeden önceVerileri güncelle, bildirimlere abone ol
viewDidAppearView ekranda göründükten sonraAnimasyonları başlat, izleme animasyonlarını başlat
viewWillDisappearView ekrandan kaybolmadan önceDurumu kaydet, bildirim aboneliğini iptal et
viewDidDisappearView ekrandan kaybolduktan sonraAnimasyonları durdur, kaynakları serbest bırak
deallocView Controller yok edildiğindeTüm kaynakları serbest bırak

Önemli: viewDidLoad, View Controller'ın ömrü boyunca yalnızca bir kez çağrılır. Her görünümde verileri güncellemek için viewWillAppear'ı kullanın. viewWillAppear'da NotificationCenter'a abone olursanız, bellek sızıntılarını önlemek için viewDidDisappear'da aboneliği iptal ettiğinizden emin olun.

SwiftUI Lifecycle

SwiftUI, View yapıları aracılığıyla View'ların yaşam döngüsünü yönetir. Geri çağırma metodları yerine SwiftUI, onAppear ve onDisappear değiştiricilerini kullanır. Global uygulama durumları için, App ve Scene protokolleri aracılığıyla App Lifecycle kullanılır. SwiftUI, duruma bağlı olarak View'ların oluşturulmasını ve yok edilmesini otomatik olarak yönetir, bu da geliştirmeyi basitleştirir ancak View kimliği ve ömrünün anlaşılmasını gerektirir.

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

Android'de LifecycleOwner ve LifecycleObserver

LifecycleOwner, yaşam döngüsü olan bir nesneyi (Activity, Fragment) işaretleyen Android Architecture Components'tan bir arayüzdür. LifecycleObserver, bir nesnenin LifecycleOwner olaylarına abone olmasını sağlayan bir arayüzdür. Birlikte, modern Android geliştirmede reaktif yaşam döngüsü yönetiminin temelini oluştururlar.

onStart/onStop'da açıkça metod çağırmak yerine, DefaultLifecycleObserver (@OnLifecycleEvent ek açıklamalarıyla eski LifecycleObserver'ın yerini alan) kullanılması önerilir. Bu, Activity veya Fragment'a doğrudan referansları olmadan yaşam döngüsüne tepki vermesi gereken ViewModel ve diğer bileşenler için Google tarafından desteklenen yaklaşımdır.

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

IT Sectr'da, tüm Android projelerinde LifecycleOwner kullanıyoruz. ViewModel, viewModelScope ve lifecycleScope aracılığıyla Activity'nin LifecycleOwner'ına abone olur ve Activity yok edildiğinde coroutine'lerin otomatik olarak iptal edilmesini garanti eder. Bu, bellek sızıntılarını önler ve kodu daha temiz ve güvenli hale getirir.

Sıkça sorulan sorular

Android'de Activity hangi durumlardan geçer?

Activity altı durumdan geçer: Created (onCreate), Started (onStart), Resumed (onResume), Paused (onPause), Stopped (onStop), Destroyed (onDestroy).

iOS'te ViewController Lifecycle metodları hangi sırayla çağrılır?

Sıra: loadView → viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear. viewDidLoad bir kez çağrılır.

Android'de LifecycleOwner nedir?

LifecycleOwner, bir Activity veya Fragment'ın yaşam döngüsüne sahip olan Android Architecture Components bileşenidir. LifecycleObserver aracılığıyla olaylara abone olmayı sağlar.

iOS'te App Lifecycle hangi durumlara sahiptir?

iOS uygulaması beş durumdan geçer: Not Running, Inactive, Active, Background, Suspended. Geçişler UIApplicationDelegate aracılığıyla yönetilir.

Android'de Saved State nedir?

Saved State, ekran döndürme veya süreç yeniden oluşturma sırasında Activity/Fragment durumunu koruyan Android mekanizmasıdır. onSaveInstanceState ve SavedStateHandle kullanır.

Özet

  • Android'de Activity Lifecycle (onCreate → onDestroy) — ekran durumu yönetiminin temeli
  • iOS ViewController Lifecycle (viewDidLoad → viewDidDisappear) — UIKit'in doğru çalışmasının anahtarı
  • Fragment Lifecycle, onAttach/onDetach ve onCreateView/onDestroyView nedeniyle Activity'den daha karmaşıktır
  • LifecycleOwner (Android), bellek sızıntısı olmadan olaylara reaktif abonelik sağlar
  • App Lifecycle tüm uygulamanın durumunu (Active, Background, Suspended) yönetir
  • SwiftUI, geleneksel ViewController metodları yerine onAppear ve onDisappear kullanır
  • Doğru yaşam döngüsü yönetimi, tipik mobil uygulama çökmelerinin %80'ine kadarını önler

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış