Sobes.tech
Middle

Ce se întâmplă cu UIViewController atunci când minimizați aplicația?

sobes.tech AI

Răspuns de la AI

Când aplicația este minimizată, UIViewController care este afișat în prezent trece prin următoarele etape ale ciclului de viață:

  1. viewWillDisappear: Metoda este apelată înainte ca vizualizarea controlerului să devină invizibilă. Aici puteți salva starea UI sau anula operațiuni.
  2. viewDidDisappear: Metoda este apelată după ce vizualizarea controlerului a fost complet ascunsă.
  3. applicationWillResignActive: Se apelează în AppDelegate înainte ca aplicația să treacă din starea activă în inactivă (de exemplu, la minimizare sau primirea unui apel).
  4. applicationDidEnterBackground: Se apelează în AppDelegate după ce aplicația a trecut în fundal. În această stare, aplicația are un timp limitat pentru a executa sarcini și poate fi suspendată sau închisă de sistem. UIViewController rămâne în memorie, dar vizualizarea sa nu este afișată.

Dacă aplicația rămâne în fundal și nu este închisă de sistem, la revenirea în starea activă, UIViewController trece prin etapele inverse:

  1. applicationWillEnterForeground: Se apelează în AppDelegate înainte ca aplicația să revină din fundal în prim-plan.
  2. applicationDidBecomeActive: Se apelează în AppDelegate după ce aplicația a devenit din nou activă.
  3. viewWillAppear: Se apelează înainte ca vizualizarea controlerului să devină vizibilă. Aici puteți actualiza UI-ul.
  4. viewDidAppear: Se apelează după ce vizualizarea controlerului a devenit vizibilă.

Este important de menționat că obiectul UIViewController nu este eliminat din memorie la minimizare, cu excepția cazului în care sistemul îl descarcă explicit din cauza lipsei de resurse (ceea ce se întâmplă rar și depinde de mulți factori). Vizualizarea (view) a controlerului poate fi, de asemenea, descărcată din memorie (viewWillUnload, viewDidUnload - metode eliminate în iOS 6) dacă nu este necesară în acel moment și sistemul are nevoie de memorie. În acest caz, la următoarea accesare a view, aceasta va fi recreată.