Activity — bu nima, Android dasturidagi ekran va uning Lifecycle

Muallif: IT Sectr Nashr etilgan: 2026-02-22 O'qish vaqti: 7 daq

Activity — Android dasturining asosiy komponenti, foydalanuvchi interfeysiga ega bitta ekranni ifodalaydi. Tizim ekranlarni qat'iy hayotiy sikl — onCreate, onResume va onDestroy callback'lari orqali boshqaradi. Har bir Activity AndroidManifest.xml da e'lon qilinadi va Intent orqali ishga tushiriladi. Android tarixi haqida batafsil Google rasmiy hujjatlarida o'qing.

Asosiy ma'lumotlar

  • Activity — UI bilan bitta ekranni ifodalovchi Android komponenti. Lifecycle orqali boshqariladi
  • Hayotiy sikl 6 ta callback ni o'z ichiga oladi: onCreate, onStart, onResume, onPause, onStop, onDestroy
  • Intent — Activity ni ishga tushirish va ekranlar o'rtasida ma'lumot uzatish mexanizmi
  • Manifest — har bir Activity ni AndroidManifest.xml da majburiy ro'yxatdan o'tkazish
  • ViewModel — Activity qayta yaratilganda ma'lumotlarni saqlash uchun Jetpack komponenti

Activity nima?

Activity — foydalanuvchi bilan o'zaro aloqa qilish uchun oyna ta'minlovchi Android dasturining asosiy komponenti. Har bir Activity alohida ekranni boshqaradi: vazifalar ro'yxati, kirish formasi, fotosurat ko'rish. Android tizimi Activity ni so'rov bo'yicha yaratadi va xotira boshqa dasturlarga kerak bo'lganda yo'q qiladi.

Activity birinchi marta Android 1.0 (2008) da paydo bo'lgan va interfeysning asosiy qurilish bloki bo'lib qolmoqda. Google (2026) ma'lumotlariga ko'ra, Google Play dagi dasturlarning 98% kamida bitta Activity ni o'z ichiga oladi. Zamonaviy arxitekturada Google ko'plab Fragment lar bilan bitta Activity ni tavsiya qiladi, ammo klassik ko'p ekranli dastur keng tarqalgan amaliyot bo'lib qolmoqda.

Activity stack (back stack) — o'tishlar tarixini saqlaydigan vazifalar to'plami. Foydalanuvchi „Orqaga“ tugmasini bosganda, joriy Activity yo'q qilinadi va oldingisi tiklanadi. Tizim to'plamni avtomatik boshqaradi, ammo dasturchi launchMode va Intent bayroqlari orqali xatti-harakatni nazorat qilishi mumkin.

Activity hayotiy sikli

Activity hayotiy sikli — ekran yaratilishdan yo'q qilinishgacha o'tadigan holatlar va callback'lar to'plami. Lifecycle ni tushunish juda muhim: holatlar bilan noto'g'ri ishlash xotira oqishiga, ma'lumot yo'qotilishiga va dastur ishdan chiqishiga olib keladi.

Android tizimi callback'larni qat'iy tartibda chaqiradi. Dasturchi resurslarni ishga tushirish, ma'lumotlarni saqlash va xotirani bo'shatish uchun kerakli metodlarni qayta yozadi. Har bir callback ga juftlik mos keladi: onCreate ↔ onDestroy, onStart ↔ onStop, onResume ↔ onPause.

CallbackMaqsadDasturchi harakati
onCreateActivity yaratilganda chaqiriladiUI ni ishga tushirish, ViewModel ga obuna
onStartActivity ko'rinadigan bo'ladiAnimatsiyalar, kamera, GPS ni ishga tushirish
onResumeActivity kirish fokusini oladiVideo, taymerlarni davom ettirish
onPauseActivity fokusni yo'qotadiQoralamalarni saqlash, animatsiyalarni to'xtatish
onStopActivity boshqa ekran tomonidan yashirilganOg'ir resurslarni bo'shatish
onDestroyActivity yo'q qilinadiObunalarni tozalash, Closeable

Activity holatlari

Activity ning to'rt holati farqlanadi: Running (onResume faol), Paused (ko'rinadi, ammo fokus yo'q), Stopped (ko'rinmaydi), Destroyed (yo'q qilingan). Tizim xotira yetishmasligida Stopped holatidagi Activity ni o'ldirishi mumkin — ma'lumotlar onSaveInstanceState da saqlanishi kerak.

Hayotiy sikl metodlari: onCreate, onStart, onResume

Activity hayotiy siklining uchta asosiy metodini Kotlin misoli bilan ko'rib chiqamiz. onCreate — kirish nuqtasi, bir marta chaqiriladi. Bu yerda setContentView orqali layout bog'lanishi, RecyclerView ni ishga tushirish, LiveData ga obuna bo'lish amalga oshiriladi. onStart — Activity foydalanuvchi uchun ko'rinadigan bo'ladi. onResume — Activity fokus oladi va o'zaro aloqaga tayyor.

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

Misolda onCreate RecyclerView ni ishga tushiradi va ma'lumotlarni yuklaydi. onStart geolokatsiya yangilanishini ishga tushiradi — faqat ekran ko'rinadigan bo'lganda ishlashi kerak bo'lgan resurs. onResume onPause da to'xtatilgan videoni davom ettiradi. Bunday bo'lish fon ortiqcha ishning oldini oladi.

Activity ni AndroidManifest.xml da e'lon qilish

Har bir Activity AndroidManifest.xml faylida e'lon qilinishi kerak. Ro'yxatdan o'tmasdan tizim ekranni topa olmaydi va ActivityNotFoundException istisnosini chiqaradi. Manifestda sinf nomi, mavzu, orientatsiya, launchMode va Intent filtrlari ko'rsatiladi.

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 bayrog'i boshqa dasturlar Activity ni ishga tushira olishini aniqlaydi. Asosiy ekran uchun exported=true, ichki ekranlar uchun — false. parentActivityName atributi standart „Yuqoriga“ navigatsiyasini (Up Navigation) yoqadi.

Intent orqali Activity ni ishga tushirish

Intent — bajarilishi kerak bo'lgan harakatni tavsiflovchi obyekt. Activity kontekstida Intent boshqa ekranni ishga tushirish va ma'lumot uzatish uchun ishlatiladi. Intent aniq (muayyan sinfni ko'rsatadi) va noaniq (harakatni ko'rsatadi, tizim mos komponentni tanlaydi) bo'lishi mumkin.

kotlin
// Aniq Intent — DetailActivity ni ma'lumotlar bilan ishga tushirish
val intent = Intent(this, DetailActivity::class.java).apply {
    putExtra("item_id", itemId)
    putExtra("item_name", itemName)
}
startActivity(intent)

// DetailActivity da ma'lumotlarni olish
val itemId = intent.getLongExtra("item_id", 0L)
val itemName = intent.getStringExtra("item_name") ?: ""

Ishga tushirilgan Activity dan natija olish uchun eskirgan startActivityForResult o'rnini olgan Activity Result API ishlatiladi. Yangi API tip xavfsiz, deklarativ va Jetpack Compose bilan ishlaydi.

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)
}

Qayta yaratishda holatni saqlash

Ekran aylanishi yoki konfiguratsiya o'zgarishida Android Activity ni qayta yaratadi — ketma-ket onDestroy va onCreate ni chaqiradi. Holat saqlanmasa, foydalanuvchi kiritilgan ma'lumotlarni, aylantirish pozitsiyasini va tanlangan elementlarni yo'qotadi. Bu muammoni hal qilish uchun Android ikkita mexanizm taqdim etadi: onSaveInstanceState va ViewModel.

onSaveInstanceState onDestroy chaqirilishidan oldin Bundle da oddiy ma'lumotlarni saqlaydi. Jetpack dan ViewModel Activity qayta yaratilishiga bardosh beradi va ma'lumotlarni xotirada saqlaydi, bu murakkab obyektlar va tarmoq so'rovlari uchun samaraliroq.

kotlin
class MainActivity : AppCompatActivity() {

    private val viewModel: MainViewModel by viewModels()

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

        // ViewModel avtomatik ma'lumotlarni saqlaydi
        viewModel.items.observe(this) { items ->
            updateAdapter(items)
        }
    }

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

Single Activity arxitekturasi va Jetpack

Google ning zamonaviy yondashuvi — bitta Activity va ko'plab Fragment bilan Single Activity arxitekturasi. Dastur bitta MainActivity dan foydalanadi, butun navigatsiyani esa Navigation Component NavHostFragment orqali amalga oshiradi. Afzalliklari: markazlashtirilgan navigatsiya, ekran bo'yicha umumiy ViewModel, Deep Links bilan to'g'ri ishlash.

Jetpack Navigation Component back stack, o'tish animatsiyalari va argument uzatish bilan ishni avtomatlashtiradi. NavHostFragment Activity layout da joylashtiriladi, navigatsiya grafi (NavGraph) esa barcha ekranlar va ular orasidagi bog'lanishlarni tavsiflaydi. Bu yondashuv Google tomonidan yangi loyihalar uchun tavsiya etiladi va Material Design tamoyillariga mos keladi.

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)

        // NavigationUI ni AppBar uchun sozlash
        setupActionBarWithNavController(navController)
    }

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

Tez-tez beriladigan savollar

Activity Fragment dan qanday farq qiladi?

Activity — o'z hayotiy sikliga ega to'liq huquqli dastur ekrani. Fragment — Activity ichidagi UI qismi, Activity qayta yaratilishiga bardosh beradi va uning Lifecycle iga bog'liq. Activity majburiy, Fragment ixtiyoriy.

Bitta dasturda nechta Activity bo'lishi mumkin?

Cheklov yo'q. Har bir ekran odatda alohida Activity ni ifodalaydi. Oddiy dastur uchun bittasi yetarli, ko'p ekranlilar uchun — 5 dan 20 gacha. Google ko'plab Fragment bilan bitta Activity ni tavsiya qiladi.

Activity da launchMode nima?

launchMode Activity vazifalar to'plamida qanday yaratilishini belgilaydi. To'rt rejim: standard (yangi nusxa yaratiladi), singleTop, singleTask (vazifada bitta nusxa) va singleInstance (izolyatsiya qilingan vazifa). Rejim AndroidManifest.xml da ko'rsatiladi.

Activity lar o'rtasida ma'lumot qanday uzatiladi?

Intent orqali — primitivlar, satrlar, Parcelable yoki Serializable joylashtiriladigan ekstralar (putExtra) bilan obyekt. Qayta aloqa uchun Activity Result API ishlatiladi — startActivityForResult ning zamonaviy tip xavfsiz o'rnini bosuvchisi.

Android da Configuration Change nima?

Configuration Change — konfiguratsiya o'zgarishida (ekran aylanishi, til o'zgarishi, klaviatura) Activity qayta yaratilishi. Tizim onDestroy → onCreate ni chaqiradi. Ma'lumotlarni saqlash uchun onSaveInstanceState yoki Jetpack dan ViewModel ishlatiladi.

Xulosa

  • Activity — foydalanuvchi interfeysiga ega bitta ekranni ifodalovchi va hayotiy sikl orqali boshqariladigan asosiy Android komponenti
  • Hayotiy sikl oltita callback dan iborat: onCreate, onStart, onResume, onPause, onStop, onDestroy — har biri qat'iy maqsadga ega
  • Intent Activity ni ishga tushirish va ekranlar o'rtasida ma'lumot uzatishni aniq va noaniq chaqiriqlar orqali ta'minlaydi
  • AndroidManifest.xml har bir Activity ni nomi, mavzusi, orientatsiyasi va filtrlari bilan majburiy ro'yxatdan o'tkazishni talab qiladi
  • ViewModel Jetpack dan Activity qayta yaratilganda ma'lumotlarni saqlaydi, onSaveInstanceState da qo'lda saqlashni almashtiradi
  • Single Activity arxitekturasi Navigation Component bilan — Android loyihalari uchun Google tomonidan tavsiya etilgan zamonaviy standart
  • launchMode Activity ning vazifalar to'plamidagi xatti-harakatini boshqaradi: standartdan izolyatsiya qilingan ekranlar uchun singleInstance gacha

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing