비디오: Operating Systems: Crash Course Computer Science #18 2024
사용자가 중단에 응답하면 (SMS 메시지) 또는 다른 응용 프로그램을 시작하면 응용 프로그램이 백그라운드로 이동합니다.
iOS 애플리케이션 수명주기.사용자가 알림 또는 중단을 수락하거나 홈 버튼을 누르면 (또는 시스템이 다른 응용 프로그램을 시작할 때) 응용 프로그램이 일시 중지 된 백그라운드 상태로 이동합니다. (앱을 계속 실행해야하는 경우 시스템에서 실행 시간을 요청할 수 있습니다.)
applicationDidEnterBackground: 메시지: 앱이 백그라운드로 처음 들어갈 때 상태가되면 applicationDidEnterBackground: 메시지가 전송됩니다. 이 방법에서는 저장되지 않은 데이터 또는 상태 (사용자가 현재 위치 - 현재보기, 선택한 옵션 및 이와 유사한 항목)를 임시 캐시 파일 또는 환경 설정 데이터베이스 " 디스크에. " 디스크라고 부르는 것을 알고 있습니다. Apple이 그렇게 말하면 아마 그렇게해야합니다. 너무 많은 사람들을 혼동하지 마십시오.
애플리케이션이 백그라운드 상태가 되더라도 무한정 남아있을 수는 없습니다. 메모리가 제한되면 iOS가 백그라운드 앱을 삭제하여 포 그라운드 앱을위한 여유 공간을 확보합니다.
응용 프로그램이 일시 중단 된 상태에서 제거되면
메모리에서 제거되었음을 알리지 않습니다.미리 데이터를 저장해야합니다.
대리인에게 applicationDidEnterBackground: 메소드가 전송되면 앱에 문서화되지 않은 시간이 있습니다. 시간이 다 떨어지기 전에 메소드가 반환되지 않으면 (또는 앱이 iOS에서 더 많은 실행 시간을 요청하지 않는 경우) 앱이 종료되고 메모리에서 제거됩니다. 애플리케이션이 더 많은 실행 시간을 요청하거나 백그라운드 실행을 선언 한 경우 applicationDidEnterBackground: 메소드가 반환 된 후에도 실행을 계속할 수 있습니다. 그렇지 않은 경우, backgroundDownEnterBackground: 메소드에서 반환 된 직후 (현재) 백그라운드 애플리케이션이 일시 중지 된
상태로 이동합니다.
응용 프로그램이 백그라운드에 있다면 다시 시작될 수 있습니다. 이는 사용자가 홈 화면이나 멀티 태스킹 막대에서 앱을 선택하거나 앱이 백그라운드에서 이벤트를 처리하거나 중요한 위치 변경을 모니터링하는 경우 시스템에서 시작한 경우에 발생할 수 있습니다. applicationWillEnterForeground: 메시지:
응용 프로그램이 백그라운드에서 다시 시작되면 applicationWillEnterForeground: 메시지가 전송됩니다. 이 메소드에서는 applicationDidEnterBackground: 메소드에서 수행 한 작업을 실행 취소해야합니다 (applicationWillResignActive가 아니라 이전에 실행 취소 한 메소드).
사용자가 SMS 메시지를 무시하거나 앱이 백그라운드에서 다시 시작되면 응용 프로그램이 다시 활성화되고 터치 및 기타 이벤트가 시작됩니다. 애플리케이션이 재 활성화되면 applicationDidBecomeActive: 메시지가 전송됩니다. applicationDidBecomeActive: 메소드를 사용하여 중단 이전의 상태로 애플리케이션을 복원 할 수 있습니다. 여기에서는 applicationWillResignActive 메서드에서 수행 한 작업을 취소합니다. 예를 들어 응용 프로그램이 비활성 상태 일 때 일시 중지되었거나 아직 시작되지 않은 모든 작업을 다시 시작합니다. 응용 프로그램이 백그라운드에서 이전에 있었던 경우 사용자 인터페이스를 새로 고쳐야 할 수 있습니다. 응용 프로그램이 일시 중지 된 상태 인 동안 시스템은 다시 실행될 때 해당 응용 프로그램에 영향을 줄 수있는 이벤트를 추적하고 병합합니다 (실제로
종료). 응용 프로그램이 가동되고 다시 실행되면 시스템은 해당 이벤트를 이벤트에 전달합니다.
이러한 이벤트의 대부분은 애플리케이션의 기존 인프라가 적절하게 응답해야합니다. 예를 들어 장치 방향이 변경되면 응용 프로그램의보기 컨트롤러가 자동으로 적절한 방향으로 인터페이스 방향을 업데이트합니다. 앱은 일반적으로 중단되거나 사용자가 종료 할 때 백그라운드로 이동합니다. 그러나 앱이 이전 버전의 SDK로 컴파일되었거나 멀티 태스킹을 지원하지 않는 이전 버전의 운영체제에서 실행중인 경우 - 또는 백그라운드에서 앱을 실행하지 않기로 결정한 경우 정보에 UIApplicationExitsOnSuspend 키를 설정합니다. plist 파일 - iOS가 앱을 종료합니다. 귀하의 응용 프로그램이 멀티 태스킹을 지원하더라도 (거의 모든 시점에서) 현재 귀하의 응용 프로그램이 아무런 통지없이 죽을 준비를해야합니다. 사용자는 멀티 태스킹 막대를 사용하여 응용 프로그램을 명시 적으로 종료 할 수 있습니다. 또한 메모리가 제한되면 시스템이 더 많은 공간을 확보하기 위해 메모리에서 응용 프로그램을 제거 할 수 있습니다.
일시 중지 된
응용 프로그램을 제거하지 않으면
경고가 표시되지 않고 훨씬주의를 기울입니다.
그러나 응용 프로그램이 현재 백그라운드 상태로 실행중인 경우 시스템은 응용 프로그램 대리인의 applicationWillTerminate: 메서드를 호출합니다. 응용 프로그램 대리인에게 다중 타스크 응용 프로그램 또는 백그라운드에서 실행중인 응용 프로그램에서 applicationWillTerminate: 메시지가 전송되면 applicationDidEnterBackground에서 수행하는 것과 동일한 종류의 작업을 수행해야합니다.이 경우를 제외하고는 응용 프로그램이 배경에서 돌아 오지 마라. 당신의 applicationWillTerminate: 메소드 구현은 제한적이고 (문서화되지는 않았지만)해야 할 일과해야 할 일을 할 수있는 시간을 가지고 있습니다. 그 이상이되면 응용 프로그램이 종료되고 메모리에서 제거됩니다. (터미네이터는 아이가 없습니다.)