Животни циклус у мобилном развоју: шта је то, које фазе и како функционише

Аутор: IT Sectr Објављено: 2026-03-02 Време читања: 9 мин

Животни циклус мобилне апликације одређује како се понаша при покретању, смањивању, повратку из позадине и затварању. У овом чланку ћемо обрадити App Lifecycle (iOS), Activity Lifecycle (Android), Fragment Lifecycle, ViewController Lifecycle и LifecycleOwner. Разумевање ових процеса је критично важно за спречавање цурења меморије, губитка података и неисправног рада апликације. Више детаља у званичној документацији Android Activity Lifecycle.

Главно

  • Activity Lifecycle (Android) укључује 7 метода: onCreate → onStart → onResume → onPause → onStop → onDestroy + onRestart
  • ViewController Lifecycle (iOS) се позива редом: viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear
  • iOS App Lifecycle има 5 стања: Not Running, Inactive, Active, Background, Suspended
  • Fragment Lifecycle је везан за Activity, али има сопствене методе: onAttach, onCreateView, onViewCreated
  • LifecycleOwner (Android) омогућава претплату на догађаје животног циклуса путем LifecycleObserver

Животни циклус апликације (App Lifecycle)

Пре него што се упустимо у животни циклус појединачних екрана, важно је разумети животни циклус целе апликације. У iOS-у, апликација пролази кроз пет стања: Not Running (није покренута), Inactive (у позадини, не прима догађаје), Active (активна), Background (у позадини, код се извршава) и Suspended (у позадини, код је суспендован). Ова стања се управљају у AppDelegate-у кроз методе applicationDidFinishLaunching, applicationDidBecomeActive, applicationWillResignActive, applicationDidEnterBackground и applicationWillTerminate.

У Android-у, еквивалент је Application Lifecycle, који се прати кроз интерфејс Application.ActivityLifecycleCallbacks. Међутим, Android се више фокусира на животни циклус Activity — појединачног екрана апликације. То је зато што Android апликација може да се састоји од више Activity-ја, сваки са својим циклусом.

Модерни приступ у Android-у је коришћење ProcessLifecycleOwner из библиотеке lifecycle-process. Он омогућава праћење стања целог процеса без везивања за одређену Activity. У iOS-у се за праћење стања апликације користи UISceneDelegate (од iOS 13) или AppDelegate. SceneDelegate управља са више прозора (multiwindow) на iPad-у. Разумевање App Lifecycle-а је посебно важно за IT Sectr при развоју апликација са позадинском синхронизацијом, стримингом и VoIP позивима.

Activity Lifecycle у Android-у

Activity је основни компонент Android апликације који представља један екран. Activity има јасно дефинисан животни циклус којим управља оперативни систем као одговор на радње корисника и системске догађаје (ротација екрана, долазни позив, недостатак меморије).

Метод Опис Шта радити
onCreateПозива се једном при креирању ActivityИницијализација UI, findViewById, подешавање ViewModel
onStartActivity постаје видљиваПокретање анимација, регистрација BroadCastReceiver
onResumeActivity добија фокус уносаПокретање камере, сензора, анимација
onPauseActivity губи фокус (делимично видљива)Чување нацрта, заустављање анимација
onStopActivity није видљиваОслобађање ресурса, заустављање ажурирања
onDestroyActivity се уништаваЧишћење свих референци, отказати претплату на LiveData
onRestartПозива се пре onStart након onStopПоновна иницијализација

Важно: onSaveInstanceState се позива пре onStop да би сачувао привремено стање. Враћање се дешава у onCreate-у путем Bundle savedInstanceState или путем SavedStateHandle у ViewModel-у. Без правилног управљања животним циклусом, апликација ће изгубити све несачуване податке при ротацији екрана.

kotlin
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putString("draft", draftText)
    }
    override fun onDestroy() {
        super.onDestroy()
        // Отписка от всех подписок
    }
}

Activity Lifecycle у Jetpack Compose

У Jetpack Compose-у, животни циклус Activity остаје непромењен, али Compose пружа додатне алате: Композицију свесну животног циклуса путем LifecycleOwner, ефекте LifecycleEventEffect и DisposableEffect за аутоматско чишћење ресурса при уништавању.

Fragment Lifecycle у детаље

Fragment у Android-у живи унутар Activity и има свој животни циклус, који се делимично поклапа са Activity, али додаје нове методе. Fragment-и могу бити додати, замењени, уклоњени без уништавања Activity, што их чини флексибилнијим, али и сложенијим.

Кључне методе Fragment Lifecycle-а: onAttach — Fragment прикачен на Activity (први позив); onCreate — иницијализација података; onCreateView — креирање View; onViewCreated — View креирана, UI може да се конфигурише; onStart — Fragment видљив; onResume — Fragment у фокусу; onPause — Fragment губи фокус; onStop — Fragment није видљив; onDestroyView — View се уништава; onDestroy — Fragment се уништава; onDetach — Fragment одкачен од Activity.

Кључна разлика од Activity: onCreateView и onDestroyView могу бити позвани више пута (нпр. при пребацивању TabLayout), док се onCreate позива једном. Сходно томе, иницијализацију View треба радити у onViewCreated, а не у onCreateView. Ресурси везани за View (попут RecyclerView адаптера) треба да се чисте у onDestroyView.

ViewController Lifecycle у iOS-у

UIViewController је основна класа за управљање екранима у iOS-у. Његов животни циклус се састоји од низа метода које UIKit аутоматски позива. Разумевање овог циклуса је критично за правилну иницијализацију UI-ја, управљање подацима и меморијом.

Метод Када се позива Типична употреба
loadViewКада View Controller учитава своју хијерархију ViewПрилагођена иницијализација без storyboard
viewDidLoadНакон учитавања View у меморију (једном)Подешавање UI, учитавање почетних података
viewWillAppearПре појављивања View на екрануАжурирање података, претплата на обавештења
viewDidAppearНакон појављивања View на екрануПокретање анимација, покретање анимација праћења
viewWillDisappearПре нестанка View са екранаЧување стања, отказати претплату на обавештења
viewDidDisappearНакон нестанка View са екранаЗаустављање анимација, ослобађање ресурса
deallocКада се View Controller уништаваОслобађање свих ресурса

Важно: viewDidLoad се позива само једном у животу View Controller-а. За ажурирање података при сваком појављивању користите viewWillAppear. Ако се претплаћујете на NotificationCenter у viewWillAppear, обавезно се одјавите у viewDidDisappear да бисте избегли цурење меморије.

SwiftUI Lifecycle

SwiftUI управља животним циклусом View-а кроз структуре View. Уместо метода повратног позива, SwiftUI користи модификаторе onAppear и onDisappear. За глобална стања апликације користи се App Lifecycle кроз протоколе App и Scene. SwiftUI аутоматски управља креирањем и уништавањем View-а на основу стања, што поједностављује развој, али захтева разумевање идентитета и животног века View-а.

swift
struct ContentView: View {
    var body: some View {
        Text("Hello")
            .onAppear {
                print("View появилась")
            }
            .onDisappear {
                print("View исчезла")
            }
    }
}

LifecycleOwner и LifecycleObserver у Android-у

LifecycleOwner је интерфејс из Android Architecture Components који означава објекат који има животни циклус (Activity, Fragment). LifecycleObserver је интерфејс који омогућава објекту да се претплати на догађаје LifecycleOwner-а. Заједно чине основу реактивног управљања животним циклусом у модерном Android развоју.

Уместо експлицитног позивања метода у onStart/onStop, препоручује се коришћење DefaultLifecycleObserver (замена за застарели LifecycleObserver са @OnLifecycleEvent анотацијама). Ово је приступ који промовише Google за ViewModel и друге компоненте које треба да реагују на животни циклус без директних референци на Activity или Fragment.

kotlin
class MyObserver : DefaultLifecycleObserver {
    override fun onStart(owner: LifecycleOwner) {
        // Подписка на обновления
    }
    override fun onStop(owner: LifecycleOwner) {
        // Отписка
    }
}

У IT Sectr-у користимо LifecycleOwner у свим Android пројектима. ViewModel се претплаћује на LifecycleOwner Activity-ја путем viewModelScope и lifecycleScope, што гарантује аутоматско отказивање корутина при уништавању Activity-ја. Ово спречава цурење меморије и чини код чистијим и сигурнијим.

Често постављана питања

Кроз која стања пролази Activity у Android-у?

Activity пролази кроз шест стања: Created (onCreate), Started (onStart), Resumed (onResume), Paused (onPause), Stopped (onStop), Destroyed (onDestroy).

Којим редом се позивају методи ViewController Lifecycle-а у iOS-у?

Редослед: loadView → viewDidLoad → viewWillAppear → viewDidAppear → viewWillDisappear → viewDidDisappear. viewDidLoad се позива једном.

Шта је LifecycleOwner у Android-у?

LifecycleOwner је компонента Android Architecture Components која поседује животни циклус Activity-ја или Fragment-а. Омогућава претплату на догађаје путем LifecycleObserver-а.

Која стања има App Lifecycle у iOS-у?

iOS апликација пролази кроз пет стања: Not Running, Inactive, Active, Background, Suspended. Транзиције се управљају путем UIApplicationDelegate-а.

Шта је Saved State на Android-у?

Saved State је механизам Android-а за чување стања Activity/Fragment при ротацији екрана или поновном креирању процеса. Користи onSaveInstanceState и SavedStateHandle.

Резиме

  • Activity Lifecycle у Android-у (onCreate → onDestroy) — основа управљања стањем екрана
  • iOS ViewController Lifecycle (viewDidLoad → viewDidDisappear) — кључ за правилан рад UIKit-а
  • Fragment Lifecycle је сложенији од Activity због onAttach/onDetach и onCreateView/onDestroyView
  • LifecycleOwner (Android) омогућава реактивну претплату на догађаје без цурења меморије
  • App Lifecycle управља стањем целе апликације (Active, Background, Suspended)
  • SwiftUI користи onAppear и onDisappear уместо традиционалних метода ViewController-а
  • Правилно управљање животним циклусом спречава до 80% типичних падова мобилних апликација

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту