Sobes.tech
Middle

Cosa succede con UIViewController quando si minimizza l'applicazione?

sobes.tech AI

Risposta dell'AI

Quando si minimizza l’applicazione, il UIViewController attualmente visualizzato passa attraverso le seguenti fasi del ciclo di vita:

  1. viewWillDisappear: Il metodo viene chiamato prima che la vista del controller diventi invisibile. Qui è possibile salvare lo stato dell’UI o annullare operazioni.
  2. viewDidDisappear: Il metodo viene chiamato dopo che la vista del controller è stata completamente nascosta.
  3. applicationWillResignActive: Viene chiamato nel AppDelegate prima che l’applicazione passi da stato attivo a inattivo (ad esempio, quando si minimizza o si riceve una chiamata).
  4. applicationDidEnterBackground: Viene chiamato nel AppDelegate dopo che l’applicazione è passata in background. In questo stato, l’applicazione ha un tempo limitato per eseguire compiti e può essere sospesa o terminata dal sistema. Il UIViewController rimane in memoria, ma la sua vista non viene mostrata.

Se l’applicazione rimane in background e non viene terminata dal sistema, al ritorno in stato attivo, il UIViewController attraversa le fasi inverse:

  1. applicationWillEnterForeground: Viene chiamato nel AppDelegate prima che l’applicazione torni dal background in primo piano.
  2. applicationDidBecomeActive: Viene chiamato nel AppDelegate dopo che l’applicazione è diventata di nuovo attiva.
  3. viewWillAppear: Viene chiamato prima che la vista del controller diventi visibile. Qui si può aggiornare l’UI.
  4. viewDidAppear: Viene chiamato dopo che la vista del controller è diventata visibile.

È importante notare che l’oggetto UIViewController non viene rimosso dalla memoria al minimizzare, a meno che il sistema non lo scarichi esplicitamente a causa di mancanza di risorse (cosa rara e dipendente da molti fattori). La vista (view) del controller può anche essere scaricata dalla memoria (viewWillUnload, viewDidUnload - metodi rimossi in iOS 6) se non è necessaria in quel momento e il sistema ha bisogno di memoria. In tal caso, al prossimo accesso a view, questa verrà ricreata.