Sobes.tech
Junior

რა შეგიძლიათ თქვათ Android-ის Activity-ის ციკლზე?

sobes.tech AI

პასუხი AI-სგან

ცხოვრების ციკლი Activity — ეს მდგომარეობათა და მათ შორის გადასვლათა ერთობლიობაა, რომლის გავლითაც გადის თითოეული Activity ინстанცია შექმნის მომენტიდან განადგურებამდე. იგი განსაზღვრულია callback მეთოდების ნაკრებით.

ძირითადი callback მეთოდები ცხოვრების ციკლში:

  • onCreate(): გამოიძახება, როდესაც Activity პირველად იქმნება. აქ ხორციელდება UI-ის ინიციალიზაცია, მონაცემების დაკავშირება და სხვა ერთჯერადი მოქმედებები.
  • onStart(): გამოიძახება, როდესაც Activity ხდება მომხმარებლისთვის ხილული, მაგრამ ჯერ არ მიიღო ფოკუსი.
  • onResume(): გამოიძახება, როდესაც Activity იღებს ფოკუსს და ხდება აქტიური. აქ ჩვეულებრივ იწყება ანიმაციები და სხვა ინტერაქტიული მოქმედებები.
  • onPause(): გამოიძახება, როდესაც Activity კარგავს ფოკუსს, მაგრამ ჯერ კიდევ ხილულია (მაგალითად, ნახევრად გამჭვირვალე დიალოგური ფანჯარა ზედა მხარეს). აქ უნდა შეჩერდეს რესურსს მოთხოვნადი ოპერაციები.
  • onStop(): გამოიძახება, როდესაც Activity აღარ არის ხილული მომხმარებლისთვის. აქ ინახება არაზოგადებული მონაცემები და თავისუფლდებიან საჭირო რესურსები.
  • onDestroy(): გამოიძახება, როდესაც Activity განადგურების წინ. აქ თავისუფლდებიან ყველა დარჩენილი რესურსები.
  • onRestart(): გამოიძახება, onStop()-ის შემდეგ, როდესაც Activity კვლავ გამოჩნდება. მას შემდეგ გამოიძახება onStart().

გრაფიკულად, ცხოვრების ციკლი ასე გამოიყურება:

Created -> Started -> Resumed -> Paused -> Stopped -> Destroyed

ასევე არსებობს გადასვლები:

  • Created -> Started (onStart()-ის შემდეგ)
  • Started -> Resumed (onResume()-ის შემდეგ)
  • Resumed -> Paused (როდესაც კარგავს ფოკუსს)
  • Paused -> Resumed (როდესაც იღებს ფოკუსს უკან)
  • Paused -> Stopped (როდესაც სრულად მალავს)
  • Stopped -> Destroyed (პროგრამის დასრულებისას)
  • Stopped -> Restarted -> Started (onRestart()-ის შემდეგ)

მნიშვნელოვანია სწორად მართოთ Activity-ის მდგომარეობა ამ callback მეთოდებში, რათა თავიდან აიცილოთ მეხსიერების გაჟონვა და უზრუნველყოთ პროგრამის სწორად მუშაობა კონფიგურაციის ცვლილების ან Activity-ებს შორის გადართვის დროს. მდგომარეობის შენახვა ხდება onSaveInstanceState()-ით (პირველად onStop()-ის წინ), ხოლო აღდგენა ხდება onCreate() ან onRestoreInstanceState()-ით (შემდეგ onStart()).

onSaveInstanceState()-ის გამოყენების მაგალითი:

// მდგომარეობის შენახვა
override fun onSaveInstanceState(outState: Bundle) {
    outState.putString("my_data", "some_value")
    super.onSaveInstanceState(outState)
}

// მდგომარეობის აღდგენა
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // ...
    if (savedInstanceState != null) {
        val myData = savedInstanceState.getString("my_data")
        // გამოყენება myData-ის
    }
}