이번에는 Application Lifecycle에 대해서 이야기를 해보겠다.

일반적으로
App Launched -> App이 보여짐 -> App이 Background에서 물러남 -> Resource 회수 과정으로 이루어진다.
가장 중요한 부분이 마지막 Resource 부분이다.
CPU time, 메모리가 한정되어 있고 OS는 항상 어떻게 이 resource들을 할당해야할지 결정해야한다.
우선 당연하지만 직접적으로 유저들에게 보여지는 것이 우선이 되어야하고, 유저들의 메모리는 background 상태에 있을때 저장을 해줘야한다.

예를 들어 Firebase를 이용하여 앱을 개발했을 때, FirebaseApp.configure() 부분을 App delegate의 didFinishLaunchingWithOptions에 적었던 기억이 있다.

정리하자면, 프로젝트를 만들때 생성되는 AppDelegate.swift 그리고 SceneDelegate.swift 파일들을 유심히 살펴봐야 한다.

AppDelegate는 현재 어느 지점에 있는지 app에 알리는 역할이다.
SceneDelegate는 iOS13 이전에는 없었다.
그러나 iOS13이후, 아이패드 등에서 multiple windows를 지원하면서 이 부분이 생기게 되었다.
multiple windows는 앱의 서로 다른 인스턴스를 running하기 때문에 SceneDelegate가 필요하다.
SceneDelegate는 각각의 windows의 lifecycle을 리포트 해준다.
예를 들어, 한 window가 background로 넘어가면, SceneDelegate는 노티를 해준다.


한눈에 확인하기 좋은 자료가 있어서 퍼왔다.



[출처]https://manasaprema04.medium.com/application-life-cycle-in-ios-f7365d8c1636

태그:

카테고리:

업데이트:

댓글남기기