Activity — bu nədir, Android-də tətbiq ekranı və onun Lifecycle

Müəllif: IT Sectr Dərc olunub: 2026-02-22 Oxuma vaxtı: 7 dəq

Activity — Android tətbiqinin əsas komponenti, istifadəçi interfeysi olan bir ekranı təmsil edir. Sistem ekranları ciddi həyat dövrü — onCreate, onResume və onDestroy callback-ləri vasitəsilə idarə edir. Hər bir Activity AndroidManifest.xml-də bəyan edilir və Intent vasitəsilə işə salınır. Android tarixi haqqında ətraflı Google-un rəsmi sənədlərində oxuyun.

Əsas məqamlar

  • Activity — UI ilə bir ekranı təmsil edən Android komponenti. Lifecycle vasitəsilə idarə olunur
  • Həyat dövrü 6 callback daxildir: onCreate, onStart, onResume, onPause, onStop, onDestroy
  • Intent — Activity-ni işə salmaq və ekranlar arasında məlumat ötürmək mexanizmi
  • Manifest — hər bir Activity-nin AndroidManifest.xml-də məcburi qeydiyyatı
  • ViewModel — Activity yenidən yaradıldıqda məlumatları saxlamaq üçün Jetpack komponenti

Activity nədir?

Activity — istifadəçi ilə qarşılıqlı əlaqə üçün pəncərə təmin edən Android tətbiqinin əsas komponenti. Hər bir Activity ayrıca ekranı idarə edir: tapşırıq siyahısı, giriş forması, foto baxışı. Android sistemi Activity-ni tələb əsasında yaradır və yaddaş digər tətbiqlərə lazım olduqda məhv edir.

Activity ilk dəfə Android 1.0 (2008)-də ortaya çıxdı və interfeysin əsas tikinti bloku olaraq qalır. Google (2026) məlumatlarına görə, Google Play-dəki tətbiqlərin 98%-i ən azı bir Activity ehtiva edir. Müasir arxitekturada Google çoxlu Fragment ilə bir Activity tövsiyə edir, lakin klassik çoxekranlı tətbiq geniş yayılmış təcrübə olaraq qalır.

Activity stack (back stack) — keçid tarixçəsini saxlayan tapşırıq yığını. İstifadəçi „Geri“ düyməsini basdıqda, cari Activity məhv edilir və əvvəlki bərpa olunur. Sistem yığını avtomatik idarə edir, lakin tərtibatçı launchMode və Intent bayraqları vasitəsilə davranışı idarə edə bilər.

Activity-nin həyat dövrü

Activity-nin həyat dövrü — ekranın yaradılmadan məhv edilməyə qədər keçdiyi vəziyyətlər və callback-lər dəsti. Lifecycle-i başa düşmək kritik əhəmiyyətlidir: vəziyyətlərlə səhv iş yaddaş sızmalarına, məlumat itkisinə və tətbiqin çökməsinə səbəb olur.

Android sistemi callback-ləri ciddi ardıcıllıqla çağırır. Tərtibatçı resursları ilkinləşdirmək, məlumatları saxlamaq və yaddaşı boşaltmaq üçün lazımi metodları dəyişdirir. Hər callback-ə bir cüt uyğun gəlir: onCreate ↔ onDestroy, onStart ↔ onStop, onResume ↔ onPause.

CallbackMəqsədTərtibatçının hərəkəti
onCreateActivity yaradıldıqda çağırılırUI-nin ilkinləşdirilməsi, ViewModel-ə abunə
onStartActivity görünən olurAnimasiyaların, kameranın, GPS-in işə salınması
onResumeActivity giriş fokusu alırVideo, taymerlərin bərpası
onPauseActivity fokusu itirirQaralamaların saxlanması, animasiyaların dayandırılması
onStopActivity başqa ekran tərəfindən gizlədilibAğır resursların boşaldılması
onDestroyActivity məhv edilirAbunəliklərin təmizlənməsi, Closeable

Activity-nin vəziyyətləri

Activity-nin dörd vəziyyəti fərqləndirilir: Running (onResume aktiv), Paused (görünür, lakin fokus yoxdur), Stopped (görünmür), Destroyed (məhv edilib). Sistem yaddaş çatışmazlığı zamanı Stopped vəziyyətində Activity-ni öldürə bilər — məlumatlar onSaveInstanceState-də saxlanmalıdır.

Həyat dövrü metodları: onCreate, onStart, onResume

Activity həyat dövrünün üç əsas metodunu Kotlin nümunəsi ilə nəzərdən keçirək. onCreate — giriş nöqtəsi, bir dəfə çağırılır. Burada setContentView vasitəsilə layout bağlanması, RecyclerView-in ilkinləşdirilməsi, LiveData-ya abunə baş verir. onStart — Activity istifadəçi üçün görünən olur. onResume — Activity fokus alır və qarşılıqlı əlaqəyə hazırdır.

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

Nümunədə onCreate RecyclerView-i ilkinləşdirir və məlumatları yükləyir. onStart geolokasiya yeniləməsini işə salır — yalnız ekran görünəndə işləməli olan resurs. onResume onPause-də dayandırılmış videonu bərpa edir. Bu cür bölgü fonda lazımsız işin qarşısını alır.

Activity-nin AndroidManifest.xml-də bəyan edilməsi

Hər bir Activity AndroidManifest.xml faylında bəyan edilməlidir. Qeydiyyat olmadan sistem ekranı tapmayacaq və ActivityNotFoundException istisnası atacaq. Manifestdə sinif adı, tema, oriyentasiya, launchMode və Intent filtrləri göstərilir.

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ğı digər tətbiqlərin Activity-ni işə sala biləcəyini müəyyən edir. Əsas ekran üçün exported=true, daxili ekranlar üçün — false. parentActivityName atributu standart „Yuxarı“ naviqasiyasını (Up Navigation) aktivləşdirir.

Intent vasitəsilə Activity-nin işə salınması

Intent — yerinə yetirilməli hərəkəti təsvir edən obyekt. Activity kontekstində Intent digər ekranı işə salmaq və məlumat ötürmək üçün istifadə olunur. Intent aşkar (müəyyən sinifi göstərir) və qeyri-aşkar (hərəkəti göstərir, sistem uyğun komponenti seçir) ola bilər.

kotlin
// Açıq Intent — DetailActivity-nin məlumatlarla işə salınması
val intent = Intent(this, DetailActivity::class.java).apply {
    putExtra("item_id", itemId)
    putExtra("item_name", itemName)
}
startActivity(intent)

// DetailActivity-də məlumatların alınması
val itemId = intent.getLongExtra("item_id", 0L)
val itemName = intent.getStringExtra("item_name") ?: ""

İşə salınmış Activity-dən nəticə almaq üçün köhnəlmiş startActivityForResult-u əvəz edən Activity Result API istifadə olunur. Yeni API tip təhlükəsiz, deklarativdir və Jetpack Compose ilə işləyir.

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

Yenidən yaratma zamanı vəziyyətin saxlanması

Ekranın fırlanması və ya konfiqurasiya dəyişikliyi zamanı Android Activity-ni yenidən yaradır — ardıcıl olaraq onDestroy və onCreate-i çağırır. Vəziyyət saxlanılmazsa, istifadəçi daxil etdiyi məlumatları, sürüşdürmə mövqeyini və seçilmiş elementləri itirir. Bu problemi həll etmək üçün Android iki mexanizm təmin edir: onSaveInstanceStateViewModel.

onSaveInstanceState onDestroy çağırılmazdan əvvəl Bundle-da sadə məlumatları saxlayır. Jetpack-dən ViewModel Activity-nin yenidən yaradılmasına davam gətirir və məlumatları yaddaşda saxlayır, bu mürəkkəb obyektlər və şəbəkə sorğuları üçün daha səmərəlidir.

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 olaraq məlumatları saxlayır
        viewModel.items.observe(this) { items ->
            updateAdapter(items)
        }
    }

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

Single Activity arxitekturası və Jetpack

Google-un müasir yanaşması — bir Activity və çoxlu Fragment ilə Single Activity arxitekturası. Tətbiq bir MainActivity istifadə edir, bütün naviqasiyanı isə Navigation Component NavHostFragment vasitəsilə yerinə yetirir. Üstünlükləri: mərkəzləşdirilmiş naviqasiya, ekran üzrə ümumi ViewModel, Deep Links ilə düzgün iş.

Jetpack Navigation Component back stack, keçid animasiyaları və arqument ötürülməsi ilə işi avtomatlaşdırır. NavHostFragment Activity layout-da yerləşdirilir, naviqasiya qrafı (NavGraph) isə bütün ekranları və onlar arasındakı əlaqələri təsvir edir. Bu yanaşma Google tərəfindən yeni layihələr üçün tövsiyə olunur və Material Design prinsiplərinə uyğundur.

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-nin AppBar üçün konfiqurasiyası
        setupActionBarWithNavController(navController)
    }

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

Tez-tez verilən suallar

Activity Fragment-dən nə ilə fərqlənir?

Activity — öz həyat dövrü olan tam hüquqlu tətbiq ekranı. Fragment — Activity daxilində UI-nin bir hissəsi, Activity-nin yenidən yaradılmasına davam gətirir və onun Lifecycle-dən asılıdır. Activity məcburidir, Fragment isə isteğe bağlıdır.

Bir tətbiqdə neçə Activity ola bilər?

Məhdudiyyət yoxdur. Hər ekran adətən ayrıca Activity təmsil edir. Sadə tətbiq üçün biri kifayətdir, çoxekranlılar üçün — 5-dən 20-yə qədər. Google çoxlu Fragment ilə bir Activity tövsiyə edir.

Activity-də launchMode nədir?

launchMode Activity-nin tapşırıq yığınında necə yaradıldığını müəyyən edir. Dörd rejim: standard (yeni nümunə yaradılır), singleTop, singleTask (tapşırıqda bir nümunə) və singleInstance (təcrid olunmuş tapşırıq). Rejim AndroidManifest.xml-də göstərilir.

Activity arasında məlumat necə ötürülür?

Intent vasitəsilə — primitivləri, sətirləri, Parcelable və ya Serializable yerləşdirilən ekstraları (putExtra) olan obyekt. Əlaqə üçün Activity Result API istifadə olunur — startActivityForResult-un müasir tip təhlükəsiz əvəzedicisi.

Android-də Configuration Change nədir?

Configuration Change — konfiqurasiya dəyişikliyi zamanı Activity-nin yenidən yaradılması (ekranın fırlanması, dil dəyişikliyi, klaviatura). Sistem onDestroy → onCreate çağırır. Məlumatları saxlamaq üçün onSaveInstanceState və ya Jetpack-dən ViewModel istifadə olunur.

Nəticə

  • Activity — istifadəçi interfeysi olan bir ekranı təmsil edən və həyat dövrü vasitəsilə idarə olunan əsas Android komponenti
  • Həyat dövrü altı callback-dən ibarətdir: onCreate, onStart, onResume, onPause, onStop, onDestroy — hər birinin ciddi təyinatı var
  • Intent Activity-nin işə salınmasını və ekranlar arasında məlumat ötürülməsini aşkar və qeyri-aşkar çağırışlar vasitəsilə təmin edir
  • AndroidManifest.xml hər bir Activity-nin adı, teması, oriyentasiyası və filtrləri ilə məcburi qeydiyyatını tələb edir
  • ViewModel Jetpack-dən Activity yenidən yaradıldıqda məlumatları saxlayır, onSaveInstanceState-də əl ilə saxlamağı əvəz edir
  • Single Activity arxitekturası Navigation Component ilə — Android layihələri üçün Google tərəfindən tövsiyə olunan müasir standart
  • launchMode Activity-nin tapşırıq yığınında davranışını idarə edir: standartdan təcrid olunmuş ekranlar üçün singleInstance-ə qədər

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun