비디오: Meteor: a better way to build apps by Roger Zurawicki 2024
iOS 기기에서 종료 이외의 다양한 이벤트가 발생하면 앱이 중단되어 사용자가 응답하고 앱이 비활성 상태가됩니다. 사용자가 중단을 무시하도록 선택하면 앱이 활성 상태 로 다시 이동하고 이전과 같이 계속 실행됩니다. 사용자가 알림을 탭하기로 결정하면 앱이 일시 중지되었지만 메모리에 남아있는 백그라운드 상태 로 이동합니다.
상태 정보 저장과 같은 작업을 수행 할 수있는 기회를 제공 할뿐만 아니라 어떤 일이 일어나고 있는지 정확하게 알려주는 여러 메시지를 보냅니다. 사용자가 앱에 있었던 지점을 저장하는 것을 의미합니다. 앱이 백그라운드에 있고 메모리에 남아 있기 때문에 다시 시작하는 것은 거의 순간적입니다. 앱의 객체는 메모리에 남아 있으므로 앱이 다시 시작될 때 다시 만들 필요가 없습니다. 메모리가 제한되면 iOS가 백그라운드 앱을 삭제하여 포 그라운드 앱을위한 여유 공간을 확보 할 수 있습니다.
이벤트 순서는 항상 앱이 활성 상태에서 비활성 상태로 전환 될 때 appWillResignActive: 메시지를 사용하여 앱 위임자에게 전송됩니다. 이 방법에서는 진행중인 작업을 일시 중지하고, 타이머를 사용하지 않도록 설정하고, OpenGL ES 프레임 속도를 조절하고 일반적으로 작업을 보류해야합니다.
사용자가 중단에 응답하거나 다른 앱을 시작하면 앱이 백그라운드로 이동합니다.
-
applicationDidEnterBackground: 메시지: 앱이 백그라운드 상태로 처음 들어갈 때, 다음과 같은 두 가지 글 머리 기호는 앱이 백그라운드로 이동 한 후 응답 할 수있는 메시지를 설명합니다. applicationDidEnterBackground: 메시지를 보냈습니다. 이 방법에서는 저장되지 않은 데이터 또는 상태 (현재보기, 선택한 옵션 등)를 임시 캐시 파일이나 디스크의 환경 설정 데이터베이스에 저장해야합니다. 앱이 백그라운드 상태로 들어가더라도 앱이 무기한으로 유지 될 것이라고 보장 할 수 없습니다. 메모리가 제한되면 iOS가 백그라운드 앱을 삭제하여 포 그라운드 앱을위한 여유 공간을 확보합니다.이후에 메모리에서 제거 될 경우를 대비하여 앱을 복원 할 수 있도록 필요한 모든 작업을 수행해야합니다.
앱이 일시 중지 된 상태에서 제거되면
앱에서 메모리에서 제거되었다는 알림을받지 못합니다. 그 때문에 applicationDidEnterBackground: 메시지를받을 때 데이터를 저장해야합니다. 대리인에게 applicationDidEnterBackground: 메소드가 전송되면 앱에 문서화되지 않은 시간이 있습니다. 시간이 다 떨어지기 전에 applicationDidEnterBackground: 메소드가 반환되지 않으면 (또는 앱이 iOS에서 더 많은 실행 시간을 요청하지 않는 경우) 앱이 종료되고 메모리에서 삭제됩니다.
앱이 더 많은 실행 시간을 요청하거나 백그라운드 실행을 선언 한 경우 applicationDidEnterBackground: 메소드가 반환 된 후에도 계속 실행될 수 있습니다. 그렇지 않은 경우, backgroundDownEnterBackground: 메소드에서 반환 된 직후 (현재) 백그라운드 애플리케이션이
일시 중지 된 상태로 이동합니다. 앱이 백그라운드에 있다면 다시 시작될 수 있습니다. 이는 사용자가 홈 화면이나 멀티 태스킹 막대에서 앱을 선택하거나 앱이 백그라운드에서 이벤트를 처리하거나 중요한 위치 변경을 모니터링하는 경우 시스템에서 시작한 경우에 발생할 수 있습니다.
applicationWillEnterForeground:
-
메시지: 앱이 백그라운드에서 다시 시작되면 applicationWillEnterForeground: 메시지가 전송됩니다. 이 메서드에서는 applicationDidEnterBackground: 메서드에서 수행 한 작업을 취소해야합니다. 사용자가 SMS 메시지를 무시하거나 앱이 백그라운드에서 다시 시작되면 앱이 다시 활성화되고 터치 및 기타 이벤트가 시작됩니다. 앱이 다시 활성화되면 applicationDidBecomeActive: 메시지가 전송됩니다.
applicationDidBecomeActive: 메소드를 사용하여 중단 이전의 상태로 앱을 복원 할 수 있습니다. 여기에서는 appWillResignActive 메소드에서 수행 한 작업을 취소합니다. 예를 들어 앱이 비활성 상태 일 때 일시 중지 된 (또는 아직 시작되지 않은) 모든 작업을 다시 시작합니다. 앱이 백그라운드에서 이전에 있었던 경우 사용자 인터페이스를 새로 고침해야 할 수 있습니다.
앱이 일시 중지 된 상태 인 동안 시스템은 다시 시작될 때 해당 앱에 영향을 미칠 수있는 이벤트를 추적하고 합칩니다 (실제로 netsout). 앱이 다시 실행되는 즉시 시스템에서 해당 이벤트를 전달합니다. 대부분의 이벤트에서 앱의 기존 인프라는 적절하게 반응해야합니다.
앱은 일반적으로 중단되면 백그라운드로 이동합니다. 그러나 앱이 매우 초기 버전의 SDK로 컴파일되었거나 멀티 태스킹을 지원하지 않는 초기 버전의 운영 체제에서 실행중인 경우 또는 백그라운드에서 앱을 실행하지 않기로 결정한 경우 정보에 UIApplicationExitsOnSuspend 키를 설정합니다. plist 파일 - iOS가 앱을 종료합니다.
앱이 멀티 태스킹을 지원하는 경우에도 알림없이 앱이 종료 될 수 있도록 준비해야합니다.사용자는 멀티 태스킹 바를 사용하여 앱을 명시 적으로 종료 할 수 있습니다. 또한 메모리가 제한되면 시스템에서 더 많은 공간을 확보하기 위해 메모리에서 앱을 제거 할 수 있습니다.
일시 중지 된
응용 프로그램을 제거하지 않으면 경고가 표시되지 않습니다. ! 응용 프로그램 대리인에게 다중 타스크 응용 프로그램 또는 백그라운드에서 실행중인 응용 프로그램에서 applicationWillTerminate: 메시지가 전송되면 applicationDidEnterBackground에서 수행하는 것과 동일한 종류의 작업을 수행해야합니다. 배경에서 돌아 오지 마라. 귀하의 applicationWillTerminate: 메소드 구현에는 수행하고 반환해야하는 작업에 소요되는 시간이 제한되어 있습니다. 그 이상으로 앱이 종료되고 메모리에서 제거됩니다.