iyOmSd/Title: Swift

[Swift] App Life Cycle

냄수 2020. 8. 20. 23:01
반응형

앱의 생명주기에 대해서 알아볼거에요

 

우선 iOS13을 기준으로 최신버전에는 SceneDelegate라는 파일이 생성되는게 보일거에요

새로운 개념이죠 다음에 알아보도록하구요!

 

지금은 AppDelegate 위주의

단순한 App의 생명주기에 대해서 알아보려고해요

 

아래그림은 왼쪽은 AppDelegate

오른쪽은 SceneDelegate가 있는상태일때 생명주기에요

 

예전그림이 변경어서 살짝 헷갈리지만 기본적인 개념은 같아요

예전그림은

 

이런 모습을 하고 있엇구요...

아무튼!

당연히 변경된 최신거를 참고해야겟죠??!

 

각 상태를 정리해볼게요

 

Active - 이벤트를받고, 일반적으로 앱이 실행되는 상태에요

Inactive - 앱의 상태변화시에 거치게되구요, 이벤트는 받지않는 상태에요 (Background로 전환시 거치는 단계)

Background - Suspended전의 상태구요 앱이 보이지 않을때 뒤에서 돌아간다고 하는 그 상태에요

Suspended - 아무코드도 실행하지않고 시스템에서 임의로 리소스를 해제할 수 있어요

Not Running - 아무것도 실행하지않은 상태이구요 앱을 키지않은 상태이거나 종료한 상태에요

 

각 상태에 따라 부를 수 있는 함수들이 있어요

AppDelegate함수구요

오버라이드해서 사용해요

이 함수들을 이용해서 원하는 시점에 처리를 해줄 수 있겟죠??

 

13버전부턴는 Scene이있다면 함수이름이 변경되었으니 주의하시구요!!

 

 

    • applicationWillResignActive
      : active -> inactive 상태로 전환시 inactive전환 직전 실행
      : 잠시 전환되는 경우
    • applicationDidEnterBackground
      : background 상태전환 직후
    • applicationWillEnterForeground
      : background -> foreground 상태로 전환시 foreground직전
    • applicationDidBecomeActive
      : active상태직후
      : 화면으로 돌아올 때마다 실행
    • applicationWillTerminate
      : 앱 종료시
    • willFinishLaunching
      : didFinish전에 호출되는 함수
    • didFinishLaunching
      : 앱 실행시 1번만 실행되는 함수

 

기본적으로 앱을 실행하면 3개의 함수가 호출되요

Not Running에서 앱을 실행시켜서 Active상태로 가서 그런거 같네요

 

 

앱이 떠잇는 상태에서

1.홈키를 눌러서 홈화면으로 가면

 

2.잠금을 눌러서 잠금화면상태일때

 

3.앱에서 다른 앱으로 이동할때

Active -> Inactive -> Background 상태네요

다시 앱을 누르면

앱화면으로 돌아오면서

Background -> Inactive -> Active 상태로 변하니까

Background -> Inactive에서

Foreground상태로 진입하기때문에 함수가 호출되고 아래는 딱보면 알겟죠이제? ㅎㅎ

 

 

앱이 떠잇는상태에서

1. 반만 올리면 여러앱들이 뜨는상태 (최소화 상태??)가 되도록 해보면

2. 전화가 오면

3. 문자가 오고 문자를 확대시

4. 잠금화면이아니라 왼쪽상단에서 스크롤해서 알림센터 보는경우

5. 오른쪽상단에서 스크롤해서 제어센터 보는경우

Active -> Inactive 가 되네요

Background로 넘어가지 않는경우에요!

이런상태요...

 

돌아올때는 당연히 반대로

Inactive -> Active가 되겟죠?

 

 

앱을 종료시키면

 

 

앱을 시작 -> 종료하는 과정에서의 호출은 아래와 같이 이루어집니다!!

 

 

정리하자면

앱이 background로 넘어가는 경우는

1. 홈키를 이용해서 홈화면을 갈 때

2. 잠금을 눌러서 잠금화면 일 때

3. 다른앱으로 이동해서 다른앱이 켜져있을 때

이구요

 

background로 안넘어가고

Inactive상태만을 유지하는 경우는

1. 멀티윈도우상태(최소화상태)

2. 앱실행중 전화가 오는경우

3. 문자가 오고 그 문자를 롱클릭으로 확대해서 볼 때 가 있어요

4. 잠금화면이아니라 왼쪽상단에서 스크롤해서 알림센터 보는경우

5. 오른쪽상단에서 스크롤해서 제어센터 보는경우

반응형