Sobes.tech
Middle

Šta se dešava sa UIViewController kada se aplikacija minimizira?

sobes.tech АИ

Одговор од АИ

Kada se aplikacija minimizira, trenutno prikazan UIViewController prolazi kroz sledeće faze životnog ciklusa:

  1. viewWillDisappear: Ovaj metod se poziva pre nego što pogled kontrolera postane nevidljiv. Ovde možete sačuvati stanje UI ili otkazati operacije.
  2. viewDidDisappear: Ovaj metod se poziva nakon što je pogled kontrolera potpuno sakriven.
  3. applicationWillResignActive: Poziva se u AppDelegate pre nego što aplikacija pređe iz aktivnog u neaktivno stanje (npr. pri minimizaciji ili primanju poziva).
  4. applicationDidEnterBackground: Poziva se u AppDelegate nakon što aplikacija pređe u režim rada u pozadini. U ovom stanju, aplikacija ima ograničeno vreme za izvršavanje zadataka i može biti pauzirana ili zatvorena od strane sistema. UIViewController ostaje u memoriji, ali njegov prikaz nije prikazan.

Ako aplikacija ostane u pozadini i ne bude zatvorena od strane sistema, pri povratku u aktivno stanje, UIViewController prolazi kroz obrnute faze:

  1. applicationWillEnterForeground: Poziva se u AppDelegate pre nego što se aplikacija vrati iz pozadine u aktivno stanje.
  2. applicationDidBecomeActive: Poziva se u AppDelegate nakon što aplikacija ponovo postane aktivna.
  3. viewWillAppear: Poziva se pre nego što pogled kontrolera postane vidljiv. Ovde možete ažurirati UI.
  4. viewDidAppear: Poziva se nakon što je pogled kontrolera postao vidljiv.

Važno je napomenuti da objekat UIViewController nije uklonjen iz memorije pri minimizaciji, osim ako ga sistem eksplicitno ne oslobodi zbog nedostatka resursa (što se retko dešava i zavisi od mnogih faktora). Pogled (view) kontrolera takođe može biti uklonjen iz memorije (viewWillUnload, viewDidUnload - metode su uklonjene u iOS 6) ako u tom trenutku nije potreban i sistem mu je potreban za memoriju. U tom slučaju, pri sledećem pristupu view, on će biti ponovo kreiran.