SceneDelegate 글을 정리하고 나서 문득 이런 생각이 들었다.
전화나 앱 푸시가 화면에 뜨면 실행 중인 앱은 잠깐이지만 background로 상태가 바뀌는 건가?
바로 실험을 해보자.
Test app을 실기기에서 실행 중일 때 전화가 왔을 때와 홀드 키로 화면 잠금으로 전환되고 전화가 왔을 때를 실험해보았다.
앱이 실행되면 다음과 같은 화면이 뜨며 console 창에 다음과 같이 입력이 나타난다.
단순 push가 나타난 상태에서는 현재 실행 중인 앱이 background로 들어가지 않는다.
다만 push를 눌러 전화 화면으로 넘어가면 다음과 같이 된다.
전화 앱이 foreground로 올라오면서 기존 test 앱은 background로 state가 변화한다.
전화를 마치고 다시 앱 화면으로 돌아오면 state가 다시 변화한다.
그 후, app을 swipe up하면 다시 background로 돌아가면서 메모리에서 해제될 혹은 다시 연결될 준비를 한다.
app-switcher에서 아예 종료를 하면 scene 연결이 종료되면서 scene session도 종료된다.
화면 잠금을 하면 앱이 background로 이동을 한다.
이 상황에서 전화가 와도 background로 간 앱 상태에는 영향을 주지 못한다.
전화가 종료되고 잠금 화면을 swipe up해야 다시 앱이 foreground로 올라올 수 있다.
카카오톡을 받아서 해당 push를 길게 눌렀을 때이다.
이 상태에서 다시 test 앱을 활성화하면 다음과 같다.
만약 push를 눌러서 카카오톡이 foreground로 올라오면 state가 변경된다.
foreground 상태의 앱이든 background로 돌아간 앱이든 push로 나타난 다른 앱의 interruption은 그 상황에서는 state에 영향을 주지 못한다.
유저가 push와 interaction을 할 때 state 변화가 나타난다.