앱 생명주기란 앱의 최초 실행부터 앱이 완전히 종료되기까지 앱이 가지는 상태와 그 상태들 사이의 전이를 뜻합니다.
앱의 상태는 현재 앱이 어떠한 것을 할 수 있는가를 결정합니다.

아예 실행되지 않았거나 시스템에 의해 종료되었을 때의 상태실행되어 클라이언트에게 보여지고 있는 상태Foreground에 진입하지만, 어떠한 이벤트도 받지 않는 상태 앱의 상태 전환 과정에서 잠깐 머무는 단계 (예시 : 배터리 부족 알림이 뜰 경우, 외부 알림이 올 경우)실제 실행중이고 사용자 이벤트를 받아서 상호작용할 수 있는 상태 바로 Active상태는 될 수 없으며 Inactive 상태를 거쳐서 Active 상태가 됩니다. (예시 : 평상시 우리가 앱을 화면에 띄우고 사용할때)홈 화면으로 나가거나 다른 앱으로 전환되어 현재 앱이 클라이언트에게 보여지지 않는 상태화면을 나가거나 다른 앱으로 전환이 되었지만 실직적으로는 앱이 실행중인 상태 (예시 : 음악 앱을 키고 화면을 닫아도 음악이 나올때, 타이머를 작동시키고 화면을 내려도 작동할때)Background상태에 있지만 아무 코드도 실행하지 않으며, 메모리상으로 올라가있지만 배터리를 사용하지않습니다. OS에 의해 메모리 부족현상이 발생하면 앱이 메모리에서 해제 될 수 있다.ios 13 이전에는 AppDelegate만을 사용하여 앱의 생명주기와 UI의 생명주기에 관련된 로직들을 다뤘습니다.
하지만 ios 13 이후부터는 AppDelegate는 앱의 생명주기를 관리하고 UI의 생명주기는 SceneDelegate에서
관리하게됩니다.
SceneDelegate가 등장하게된 배경은 아이패드에서 여러화면을 띄울 수 있도록 하기위해 등장하였습니다.
SceneDelegate가 등장한 이후로 하나의 앱에서 여러개의 창(Window)를 동시에 사용할 수 있게 되었습니다.
여기서부터 Window의 개념이 Scene으로 바뀌었다.
최초 실행될 때 호출되는 메서드실행된 직후 사용자의 화면에 보여지기 직전에 호출되는 메서드종료되기 직전에 호출. 사용자 데이터등을 종료 전에 한 번 더 저장해두는 것이 좋습니다.Active 상태가 되기 직전, 화면에 보여지기 직전에 호출되는 메서드Active 상태로 전환된 직후 호출되는 메서드InActive 상태로 전화되기 직전에 호출되는 메서드Background 상태로 전환된 직후 호출되는 메서드Active 상태가 되기 직전, 화면에 보여지기 직전에 호출되는 메서드앱에 추가될 때 호출되는 메서드결이 해제될 때 호출되는 메서드Active 상태가 되기 직전, 화면에 보여지기 직전에 호출되는 메서드Active 상태로 전환된 직후 호출되는 메서드nActive 상태로 전환되기 직전에 호출되는 메서드Background 상태로 전환된 직후 호출되는 메서드Active 상태가 되기 직전, 화면에 보여지기 직전에 호출되는 메서드
뷰를 만들고 메모리에 올립니다.메모리에 로드된 후 호출된다. 특별한 경우가 아니라면 딱 한번 실행되기 때문에 초기화할 때 사용할 수 있습니다.뷰가 생성되기 직전에 실행된다. 뷰가 나타나기 전에 실행해야 하는 작업들을 여기서합니다.뷰가 생성된 후 실행된다. 데이터를 받아서 화면에 뿌려주거나 애니메이션 작업 등을 하는 로직을 위치시킵니다.뷰가 사라지기 직전에 실행된다. 뷰가 삭제되려고하는 것을 viewController에 알리는 역할을 한다.뷰가 사라지고 난 후 실행된다. 뷰가 삭제 됐음을 viewController에 알린다.뷰가 나타날때 실행된다. UIKit viewDidApear와 동일하다.뷰가 사라질때 실행된다. UIKit viewDidDisappear와 동일하다.비동기 작업을 수행해야할 때 사용한다.iOS앱은 기본적으로 Foreground, 즉 사용자가 앱을 열어 활성화한 경우에만 작동합니다.
하지만 사용자가 홈으로 나가거나 앱을 전환하면 앱은 Background 상태로 실행됩니다.
iOS는 퍼포먼스 이슈로 Background 실행시간을 제한합니다.
이 제한된 시간안에 작업을 수행하려면 BackgroundTask를 사용하여 시간 제한을 늘릴 수 있습니다.
예를 들어 파일 다운로드, 데이터 동기화, 알림 처리, 위치 추적, 오디오 재생 등을 Background에서 처리
할 수 있습니다.
BackgroundTask를 구현하려면 Xcode에서 Background Mode도 설정해주어야 합니다.
Background Mode는 iOS 앱이 Background에서 실행 가능한 기능을 설정하는 옵션이다.

Background모드는 XCode -> 타겟 -> Capabilities -> Background Mode에서 설정할 수 있습니다.
BackgroundTask와 관련된 설정은 Background feetch, Remote Notifications, Background Processing 정도가 있다.
BackgroundTask는 1.등록 2.스케줄링 3.실행 4.완료 순으로 작동합니다.
더 상세한 내용은 아래 링크에 잘 정리되어있습니다. 참고해주세요!
**https://velog.io/@yoosa3004/iOS-Background-Mode-Background-Task**