Activity — nedir, Android uygulama ekranı ve Lifecycle'ı

Yazar: IT Sectr Yayınlanma: 2026-02-22 Okuma süresi: 7 dk

Activity — kullanıcı arayüzüne sahip tek bir ekranı temsil eden temel bir Android uygulama bileşenidir. Sistem, katı bir yaşam döngüsü (onCreate, onResume ve onDestroy geri çağrımları) aracılığıyla ekranları yönetir. Her Activity AndroidManifest.xml'de bildirilir ve Intent aracılığıyla başlatılır. Android'in geçmişi hakkında daha fazla bilgiyi Google'ın resmi belgelerinde okuyun.

Önemli Noktalar

  • Activity — UI ile tek bir ekranı temsil eden Android bileşeni. Lifecycle aracılığıyla yönetilir
  • Yaşam döngüsü 6 geri çağrım içerir: onCreate, onStart, onResume, onPause, onStop, onDestroy
  • Intent — Activity'yi başlatma ve ekranlar arasında veri aktarma mekanizması
  • Manifest — her Activity'nin AndroidManifest.xml'de zorunlu kaydı
  • ViewModel — Activity yeniden oluşturulurken verileri korumak için Jetpack bileşeni

Activity Nedir?

Activity — kullanıcıyla etkileşim için bir pencere sağlayan ana Android uygulama bileşenidir. Her Activity ayrı bir ekranı yönetir: görev listesi, giriş formu, fotoğraf görüntüleyici. Android sistemi talep üzerine bir Activity oluşturur ve diğer uygulamaların belleğe ihtiyacı olduğunda onu yok eder.

Activity ilk olarak Android 1.0'da (2008) ortaya çıktı ve arayüzün ana yapı taşı olmaya devam ediyor. Google'a (2026) göre, Google Play'deki uygulamaların %98'i en az bir Activity içeriyor. Modern mimaride Google, birden çok Fragment ile tek bir Activity önermektedir, ancak klasik çok ekranlı uygulama yaygın bir uygulama olmaya devam etmektedir.

Activity stack (back stack) — gezinme geçmişini depolayan görev yığınıdır. Kullanıcı "Geri"ye bastığında, mevcut Activity yok edilir ve bir önceki geri yüklenir. Sistem yığını otomatik olarak yönetir, ancak geliştirici launchMode ve Intent bayrakları aracılığıyla davranışı kontrol edebilir.

Activity Yaşam Döngüsü

Activity yaşam döngüsü, bir ekranın oluşturulmadan yok edilmeye kadar geçtiği durumlar ve geri çağrımlar kümesidir. Lifecycle'ı anlamak kritik öneme sahiptir: yanlış durum yönetimi bellek sızıntılarına, veri kaybına ve uygulama çökmelerine yol açar.

Android sistemi geri çağrımları katı bir sırayla çağırır. Geliştirici, kaynakları başlatmak, verileri kaydetmek ve belleği serbest bırakmak için gerekli yöntemleri geçersiz kılar. Her geri çağrımın bir karşılık gelen çifti vardır: onCreate ↔ onDestroy, onStart ↔ onStop, onResume ↔ onPause.

Geri ÇağrımAmaçGeliştirici Eylemi
onCreateActivity oluşturulurken çağrılırUI başlatma, ViewModel'e abone olma
onStartActivity görünür hale gelirAnimasyonları, kamerayı, GPS'i başlatma
onResumeActivity giriş odağını alırVideo, zamanlayıcıları sürdürme
onPauseActivity odağı kaybederTaslakları kaydetme, animasyonları durdurma
onStopActivity başka bir ekran tarafından gizlenirAğır kaynakları serbest bırakma
onDestroyActivity yok edilirAbonelikleri temizleme, Closeable

Activity Durumları

Activitynin dört durumu vardır: Running (onResume aktif), Paused (görünür ancak odaksız), Stopped (görünmez), Destroyed (yok edilmiş). Sistem, bellek yetersiz olduğunda Stopped durumundaki bir Activity'yi sonlandırabilir — veriler onSaveInstanceState'da kaydedilmelidir.

Yaşam döngüsü yöntemleri: onCreate, onStart, onResume

Bir Kotlin örneği ile Activity yaşam döngüsünün üç ana yöntemini inceleyelim. onCreate — giriş noktasıdır, bir kez çağrılır. Burada setContentView aracılığıyla düzen bağlama, RecyclerView başlatma, LiveData'ya abone olma gerçekleşir. onStart — Activity kullanıcıya görünür hale gelir. onResume — Activity odağı alır ve etkileşime hazır hale gelir.

kotlin
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val recyclerView = findViewById<RecyclerView>(R.id.rv_items)
        recyclerView.layoutManager = LinearLayoutManager(this)
        loadItems()
    }

    override fun onStart() {
        super.onStart()
        startLocationUpdates()
    }

    override fun onResume() {
        super.onResume()
        resumeVideoPlayer()
    }
}

Örnekte, onCreate RecyclerView'i başlatır ve verileri yükler. onStart coğrafi konum güncellemelerini başlatır — yalnızca ekran görünürken çalışması gereken bir kaynak. onResume, onPause'da duraklatılan videoyu sürdürür. Bu ayrım, gereksiz arka plan çalışmasını önler.

AndroidManifest.xml'de Activity Bildirimi

Her Activity AndroidManifest.xml dosyasında bildirilmelidir. Kayıt olmadan, sistem ekranı bulamaz ve ActivityNotFoundException istisnası fırlatır. Manifest'te sınıf adı, tema, yönlendirme, launchMode ve Intent filtreleri belirtilir.

xml
<application
    android:allowBackup="true"
    android:label="@string/app_name"
    android:theme="@style/Theme.MyApp">

    <activity
        android:name=".MainActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".DetailActivity"
        android:parentActivityName=".MainActivity" />
</application>

exported bayrağı, diğer uygulamaların Activity'yi başlatıp başlatamayacağını belirler. Ana ekran için exported=true, iç ekranlar için — false. parentActivityName özelliği standart "Yukarı" gezinmeyi (Up Navigation) etkinleştirir.

Intent ile Activity Başlatma

Intent — gerçekleştirilecek eylemi tanımlayan bir nesnedir. Activity bağlamında Intent, veri aktarımıyla başka bir ekranı başlatmak için kullanılır. Intent açık (belirli bir sınıfı belirtir) ve örtük (bir eylem belirtir, sistem uygun bileşeni seçer) olabilir.

kotlin
// Açık Intent — DetailActivity'yi verilerle başlatma
val intent = Intent(this, DetailActivity::class.java).apply {
    putExtra("item_id", itemId)
    putExtra("item_name", itemName)
}
startActivity(intent)

// DetailActivity'de veri alma
val itemId = intent.getLongExtra("item_id", 0L)
val itemName = intent.getStringExtra("item_name") ?: ""

Başlatılan bir Activity'den sonuç almak için, kullanımdan kaldırılan startActivityForResult'ın yerini alan Activity Result API kullanılır. Yeni API tür güvenlidir, bildirime dayalıdır ve Jetpack Compose ile çalışır.

kotlin
private val getResult = registerForActivityResult(
    ActivityResultContracts.StartActivityForResult()
) { result ->
    if (result.resultCode == Activity.RESULT_OK) {
        val data = result.data?.getStringExtra("result_key")
    }
}

fun openPicker() {
    val intent = Intent(this, PickerActivity::class.java)
    getResult.launch(intent)
}

Yeniden oluşturulurken durumu kaydetme

Ekran döndürme veya yapılandırma değişikliği sırasında Android, Activity'yi yeniden oluşturur — sırayla onDestroy ve onCreate'i çağırır. Durum kaydedilmezse, kullanıcı girilen verileri, kaydırma konumunu ve seçili öğeleri kaybeder. Android bu sorunu çözmek için iki mekanizma sağlar: onSaveInstanceState ve ViewModel.

onSaveInstanceState, onDestroy çağrılmadan önce Bundle'da basit verileri kaydeder. Jetpack'ten ViewModel, Activity yeniden oluşturulmasına dayanır ve verileri bellekte depolar; bu, karmaşık nesneler ve ağ istekleri için daha verimlidir.

kotlin
class MainActivity : AppCompatActivity() {

    private val viewModel: MainViewModel by viewModels()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // ViewModel verileri otomatik olarak kaydeder
        viewModel.items.observe(this) { items ->
            updateAdapter(items)
        }
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putInt("scroll_position", recyclerView.computeVerticalScrollOffset())
    }
}

Single Activity Mimarisi ve Jetpack

Google'ın modern yaklaşımı, tek bir Activity ve birden çok Fragment ile Single Activity mimarisidir. Uygulama bir MainActivity kullanır ve tüm gezinme, NavHostFragment aracılığıyla Navigation Component tarafından yönetilir. Avantajları: merkezi gezinme, ekran başına paylaşılan ViewModel, doğru Deep Links işleme.

Jetpack Navigation Component, geri yığın yönetimini, geçiş animasyonlarını ve argüman iletimini otomatikleştirir. NavHostFragment, Activity düzenine yerleştirilir ve gezinme grafiği (NavGraph) tüm ekranları ve aralarındaki bağlantıları tanımlar. Bu yaklaşım, Google tarafından yeni projeler için önerilir ve Material Design ilkelerini izler.

kotlin
class MainActivity : AppCompatActivity() {

    private val navController by lazy {
        findViewById<NavHostFragment>(R.id.nav_host_fragment)
            .navController
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // AppBar için NavigationUI kurulumu
        setupActionBarWithNavController(navController)
    }

    override fun onSupportNavigateUp() = 
        navController.navigateUp() || super.onSupportNavigateUp()
}

Sıkça Sorulan Sorular

Activity ile Fragment arasındaki fark nedir?

Activity — kendi yaşam döngüsüne sahip tam teşekküllü bir uygulama ekranıdır. Fragment — Activity içindeki UI'nin bir parçasıdır, Activity yeniden oluşturulmasına dayanır ve onun Lifecycle'ına bağlıdır. Activity zorunludur, Fragment isteğe bağlıdır.

Bir uygulamada kaç Activity olabilir?

Sınır yoktur. Her ekran genellikle ayrı bir Activity temsil eder. Basit bir uygulama için bir tane yeterlidir, çok ekranlı uygulamalar için — 5 ila 20. Google, birden çok Fragment ile tek bir Activity önerir.

Activity'de launchMode nedir?

launchMode, bir Activity'nin görev yığınında nasıl oluşturulacağını belirler. Dört mod: standard (yeni bir örnek oluşturulur), singleTop, singleTask (görev başına bir örnek) ve singleInstance (izole görev). Mod AndroidManifest.xml'de ayarlanır.

Activity'ler arasında veri nasıl aktarılır?

Intent aracılığıyla — ilkelleri, dizeleri, Parcelable veya Serializable içerebilen extras (putExtra) içeren bir nesne. Geri bildirim için Activity Result API kullanılır — startActivityForResult'ın modern tür güvenli bir yedeği.

Android'de Configuration Change nedir?

Configuration Change — yapılandırma değişikliğinde (ekran döndürme, dil değişikliği, klavye) Activity'nin yeniden oluşturulmasıdır. Sistem onDestroy → onCreate'i çağırır. Verileri kaydetmek için onSaveInstanceState veya Jetpack'ten ViewModel kullanın.

Özet

  • Activity — bir yaşam döngüsü aracılığıyla yönetilen kullanıcı arayüzüne sahip tek bir ekranı temsil eden temel Android bileşeni
  • Yaşam döngüsü altı geri çağrımdan oluşur: onCreate, onStart, onResume, onPause, onStop, onDestroy — her birinin katı bir amacı vardır
  • Intent, açık ve örtük çağrılar aracılığıyla Activity başlatma ve ekranlar arasında veri aktarımı sağlar
  • AndroidManifest.xml, her Activity'nin ad, tema, yönlendirme ve filtrelerle zorunlu kaydını gerektirir
  • ViewModel (Jetpack), Activity yeniden oluşturulurken verileri korur, onSaveInstanceState'daki manuel kaydetmenin yerini alır
  • Navigation Component ile Single Activity mimarisi, Google tarafından Android projeleri için önerilen modern standarttır
  • launchMode, Activity'nin görev yığınındaki davranışını kontrol eder: standarttan izole ekranlar için singleInstance'a kadar

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ış

Ayrıca okuyun