본문 바로가기
iOS/설명

[iOS] applicationWillTerminate

by Sky Titan 2022. 5. 25.
728x90
 

When will applicationWillTerminate be called?

In what situations will applicationWillTerminate be called? For example, will it ocassionally be called if there is a crash in the code? Apple's doc is vague on this, it only says when the system ...

stackoverflow.com

 

applicationWillTerminate

  • applicationWillTerminate는 app이 terminate되기 직전에 호출된다.
  • 항상 background 상태에서만 호출이 되며 suspended 상태에선 system이 app을 종료하든, user가 종료하든 호출이 되지 않는다.
    • Tip: user가 직접 앱을 종료하는 경우, background mode를 지원하는 앱은 보통 백그라운드로 가자마자 suspended가 되기 때문에 background로 가기전, foreground(inactive) 상태에서 app switcher에서 종료시켜야 호출되는 모습을 볼 수 있다.
  • 해당 메소드 내에 app을 종료하기 전 상태를 저장하거나 clean up 작업을 실행하는 코드를 작성할 수 있다.
  • 다만 해당 메소드는 약 5초 이내에 종료되기 때문에 그 안에 실행할 수 있는 작업만 실행해야한다.
  • 아래와 같은 경우에 호출된다
    • background 실행을 지원하지 않는 앱을 user가 종료시킨 경우(혹은 background로 진입한 경우)
    • iOS 3.x 혹은 그 이전 버전의 경우
  • 보통 background 실행을 지원하는 app의 경우 해당 메서드는 실행되지 않는다.
    • 하지만 background로 진입한 순간 (suspended x), system이 특정 이유로 app을 terminate해야되는 상황이 생긴다면 호출될 수 있다.
  • 해당 메소드 호출 후, app은 willTerminateNotification이라는 notification을 발송해 app의 상태전환에 대응할 수 있도록 한다.
728x90

댓글