iOS

App LifeCycle에 대해 알아보자.

TaeJoongYoon 2018. 10. 25. 20:39

안녕하세요. ☁️ On the Swift의 윤태중입니다.


iOS App의 LifeCycle을 아는 것은 App 개발의 기본이라 생각하기 때문에


한번 정리하는 시간을 가지려고 합니다 :)


# App LifeCycle에 대해 알아보자.


세상 모든 것은 만들어 진다면 사라지기 마련이죠.

탄생이 있으면 죽음이 있고, 만남이 있다면 헤어짐이 있듯이

App도 마찬가지로 한 LifeCycle이 존재하고

이에 따라 상태가 각기 달라집니다.

일단, 큰 그림부터 한 번 보겠습니다.


[State changes in an iOS app]



일단 크게보면


App이 화면에 보이는 상태인 'Foreground'화면에서 보이지 않는 상태인 'Background'가 있고


그 안에는


'Not Running', 'Inactive', 'Active', 'Background', 'Suspended' 총 5가지의 상태가 있습니다.


그러면 각각의 상태에 대해서 알아보도록 하겠습니다.


1) Not Running : App이 아직 실행되지 않았거나 System에 의해 종료된 상태.


2) Inactive : App이 Foreground상태에 있지만 아직 Event를 받지 않은 상태.

일반적으로 다른 상태로 전환될 때 잠시 동안만 이 상태를 유지한다.


3) Active : App이 Foreground상태에 있고 Event를 받은 상태. 


4) Background : App이 Background상태에 있지만 Code가 있는 상태.


5) Suspended : App이 Background상태에 있고 동작하는 Code가 없는 상태.

System은 App을 자동으로 이 상태로 만들고 Memory에는 유지. 하지만 Memory 부족 상태가 나타나면 Memory에서 제거.



App의 LifeCycle은 크게 어렵지 않은 것 같습니다...


운영체제 수업때 배웠던 Process의 LifeCycle과 비슷하군요 :)


그렇다면 각 상태들이 어떤 상황인지 알았으니 이를 코드에 적용시켜 볼까요?


다행히 이 LifeCycle에 해당되는 함수들은 AppDelegate.swift 파일에 존재합니다!!!!!






함수들 이름은 이렇게 되어있고 함수가 의미하는 바는 이름에 잘 나와 있답니다 ㅎㅎ


(네이밍이 정말 좋은 것 같아요 👍👍)


각 함수가 의미하는 바는 각 함수명 아래에 적어보았습니다 ㅎㅎ 따로 빼서 적는것 보다 저게 더 깔끔해 보이더군요 ㅎㅎㅎ...


그리고 처음 AppDelegate.swift 파일에 어느정도 정보가 쓰여있기 때문에 


각 상태관리를 해야할 때 주석을 잘 보시는 것을 추천드립니다!



App의 LifeCycle를 이해하는 것은 기본이라 생각하고


다음에는 View의 LifeCycle를 공부해보도록 하겠습니다 :)


Reference


iOS App Life Cycle




아직 모르는 것이 많고 알아가는 과정입니다.

잘못된 것이 있다면 댓글로 남겨주신다면 감사하겠습니다! 😊