#iOS์ฑ์ ์ํ
#Not Running
์๋ฌด๊ฒ๋ ์คํํ์ง ์์ ์ํ, ํน์ ์คํ์ค์ด์ง๋ง ์์คํ
์ ์ํด ์ข
๋ฃ๋ ์ํ๋ฅผ ๋งํจ
#Foreground - InActive
- Forground์์ ์ฑ์ด ๋์๊ฐ๊ธด ํ์ง๋ง ์ด๋ฒคํธ๋ฅผ ๋ฐ์ง ์๋ ์ํ.
- ์ฑ ์คํ์ค์ ์ ํ๊ฐ ์ค๊ฑฐ๋, ๋ค๋ฅธ ์ฑ์ผ๋ก ์ ํํ๋ ค๊ณ ํ๊ฑฐ๋, ๋ฑ๋ฑ ์ฌ์ฉ์๊ฐ ์จ์ ํ full control์ด ๋ถ๊ฐํ ์ํ๋ฅผ InActive์ํ๋ผ๊ณ ๋งํ๋ค. (๊ฑฐ์ ๋ชจ๋ ๊ฒฝ์ฐ์ ์ผ์์ ์ด๋ค)
- Not Running ์ํ์์ ์ฑ์ ์คํ์์ผ Active๋ก ๋ฐ๊พธ๋ ค๋ฉด, InActive๋ฅผ ๊ฑฐ์ณ์ผํ๋ค. ๋ฐ๋์ ๊ฒฝ์ฐ๋ ๋ง์ฐฌ๊ฐ์ง๋ก InActive๋ฅผ ๊ฑฐ์ณ์ผํ๋ค.
#Foreground
- ๋ฉ๋ชจ๋ฆฌ์ ์ฑ์ด ์ ์ฌ๋์ด์์. (ํ๋ฉด์ ์ ์ ํ๊ณ ์๋ค)
# Background
- ๋ฉ๋ชจ๋ฆฌ์ ์ฑ์ด ์ ์ฌ๋์ด์์. (ํ๋ฉด์ ์ ์ ํ์ง ์๋๋ค)
- Background๋ก ๋ค์ด๊ฐ๋ฉด ์ฑ์ด ์ข
๋ฃ๋์๋ค๊ณ ๋ณธ๋ค.
# Background - Running
- ๋ฐฑ๊ทธ๋ผ์ด๋์ด์ง๋ง, ๋คํธ์ํฌ ํต์ ์ด ํ์ํ ๊ฒฝ์ฐ, ํน์ ์์์ ์ฅ ๋ฑ ๋ง์ง๋ง ํ๋์ ํจ์๋ง ํธ์ถ๊ฐ๋ฅํ๋ค.
- ์ ํ ๋ณด์์ง์นจ์ Background running๋๋๊ฒ์ ๊ต์ฅํ ์ ํ์ ์ด๋ค. ์ฑ์ Background๋ก ๋ณด๋ด๊ณ 5๋ถ๊ฐ๋๋ง Running์ํ๋ฅผ ์ ์งํ ์ ์๋ค.
- ๋
น์, gps, ์์
๋ฑ์ background์์๋ ๋์ํ ์ ์๋ค.
- ๋ง์ง๋ง ํธ์ถํ ํจ์๊ฐ ์คํ ์๋ฃ๋๋ฉด Suspend์ํ๋ก ๋ฐ๋๋ค.
# Background - Suspend
- ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋๊ธฐ์ํ์ ์๋ ์ฑ์ ๋งํ๋ค. (์๋ฌด๋ฐ ๋์์ ํ์ง ์๋ ๋๊ธฐ)
- Suspend ์ํ์ธ ์ฑ์ด ๋ง์์ ธ์, ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํด์ง๋ฉด OS์์ ์๋์ผ๋ก Not Running ์ํ๋ก ๋ฐ๊ฟ๋ฒ๋ฆฐ๋ค.
# AppDelegate Method (iOS12๊น์ง)
์ค์ - ์ฌ์ฉ์ ๋์, ์ ์ - ์์คํ
๋์
(๋ง์ฝ ์ฌ์ฉํ๋ ค๋ฉด SceneDelegate๋ฅผ ์ญ์ ํ๊ณ , info.plist์์๋ Scene๊ด๋ จ ํ๋กํผํฐ๋ฅผ ์ญ์ ํ๋ฉด ๋๋ค.)
(iOS12๊น์ง)UIKit์ ๋ชจ๋ LifeCycle์ UIApplicationDelegate ๊ฐ์ฒด์ ์ ๋ฌํ๋ค. AppDelegate๋ ์ฑ์ ๋ชจ๋ window๋ฅผ ๊ด๋ฆฌํ๊ฒ ๋๋ค.
Not Running ์ํ์ ์ฑ์ ์คํ์ํฌ๋ ํธ์ถ
application(_: DidFinishLaunchingWithOptions:)
- ์ฑ์ ์คํํ๊ณ ์ฑ ์ด๊ธฐํ๋ฅผ ์๋ฃํ๊ณ ๋ ์งํ์ ํธ์ถ๋๋ค.
Active์ํ๋ก ๋ฐ๋๊ณ ๋์ ํธ์ถ
applicationDidBecomeActive:
InActive์ํ๋ก ๋ฐ๋๊ธฐ ์ง์ ํธ์ถ
applicationWillResignActive:
Background ์ํ๋ก ๋ฐ๋๊ณ ๋์ ํธ์ถ
applicationDidEnterBackground:
Foreground ์ํ๋ก ๋ฐ๋๊ธฐ ์ง์ ํธ์ถ
applicationWillEnterForeground:
Not Running ์ํ๋ก ๋ฐ๋ ๋ ํธ์ถ
applicationWillTerminate:
- ์ด ๋ฉ์๋๋ ์ฑ์ ์ข
๋ฃํด์ฃผ๊ณ , ๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ฑฐํด์ค๋ค๋๊ฒ์ ์๋ ค์ค๋ค. ์ฌ์ฉ์ ๋ฐ์ดํฐ ์ ์ฅ, ๊ณต์ ๋ฆฌ์์ค ํด์ ๋ฑ์ ์์
์ ์ํํ๋ฉฐ ์ต์ข
์ ์ผ๋ก ๋ฐํํ๋๋ฐ ์ฝ 5์ด์ ๋๊ฐ ๊ฑธ๋ฆฐ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ์๊ฐ ์ฑ์ ์ข
๋ฃํ ๋ ํธ์ถ๋์ง๋ ์๋๋ค. ์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ด๋ํ๊ธฐ ๋๋ฌธ์ด๋ฉฐ, ์์คํ
์ด ํน์ ์ด์ ๋ก ์ฑ์ ์ข
๋ฃํด์ผ ํ๋ ์ํฉ์์ ํธ์ถ๋ ์ ์๋ค.
- ๋ฐฑ๊ทธ๋ผ์ด๋๋ฅผ ์ง์ํ์ง ์๋ ์ฑ์ด๋ผ๋ฉด ์ฌ์ฉ์๊ฐ ์ข
๋ฃํ ๋ ์ด ๋ฉ์๋๋ ํญ์ ์คํ๋๋ค.
# iOS13์ดํ์ AppDelegate์ ์ถ๊ฐ๋ ๋ฉ์๋
1. application(... configurationForConnecting: ) ->>>> scene์ ๋ง๋ค ๋ ๊ตฌ์ฑ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ ๋ฉ์๋
2. application(_ : didDiscardSceneSessions:) ->>>> App switcher๋ฅผ ํตํด scene์ ๋ซ์๋ ํธ์ถ๋๋ค.
# Scene Delegate Method (iOS13์ดํ)
iOS 13๋ถํฐ๋ Scene์ด๋ผ๋ ๊ฐ๋
์ด ๋์
๋์๋ค. ํ๋์ ์ฑ์ด ์ฌ๋ฌ๊ฐ์ Scene์ ๊ฐ์ง ์ ์๋๋ฐ, ์ด๋ ๊ฐ Scene๋ง๋ค life Cycle์ด ์กด์ฌํ๊ฒ ๋๋ค.
Scene์ UI ๋ฐ ์ปจํ
์ธ ์ ๋ฐฐ๊ฒฝ์ผ๋ก ์ฌ์ฉ๋๋๊ฒ์ ๋งํ๋ฉฐ, UI์ ์ธ์คํด์ค๋ฅผ ๋ํ๋ด๋ windows์ ViewController๊ฐ ๋ด๋ถ์ ํฌํจ๋๋ค.
Scene๋ค์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฑ ํ๋ก์ธ์ค ๊ณต๊ฐ์ ๊ณต์ ํ๋ฉฐ, ์๋ก ๋์์ ์คํ๋๋๋ฐ ๊ฒฐ๊ณผ์ ์ผ๋ก ํ๋์ ์ฑ์ ์ฌ๋ฌ๊ฐ์ Scene๊ณผ SceneDelegate ๊ฐ์ฒด๋ฅผ ํ์ฑํ ํ ์ ์๋ค. (๊ทธ๋ ๊ธฐ ๋๋ฌธ์ iOS์์ Split Veiw๋ฅผ ์ด์ฉํ์ฌ ๋ค์ค ์ฑ์ ๋น๋ํ ์ ์๋ค.)
- Scene Delegate๊ฐ ์๊ธฐ๋ฉด์ Not Running๋จ๊ณ๊ฐ ์ฌ๋ผ์ก๋ค.
- Scene์ ์ ํ ๊ฐ๋ฅํ ๊ธฐ๋ฅ์ด๋ค.
-
https://developer.apple.com/documentation/uikit/app_and_environment/managing_your_app_s_life_cycle/