რა შეგიძლიათ თქვათ 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-ის
}
}