์๋
ํ์ธ์ :) ์ค๋์ ์๋๋ก์ด๋ Context์ ๋ํด ์์๋ณด๋ ค๊ณ ํฉ๋๋ค. context : Context ๋งค๊ฐ๋ณ์๋ฅผ ์๊ตฌํ๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํด๋ณด์ ์ ์ด ๋ง์ผ์คํ
๋ฐ์. ๊ณผ์ฐ context๊ฐ ๋ฌด์์ด๊ณ ์ ํ์ํ์ง, context ์ข
๋ฅ๋ ์ด๋ค๊ฒ์ด ์๊ณ , ๊ฐ ์ข
๋ฅ์ context๋ฅผ ์ฌ์ฉํ ๋ ์ฃผ์ํ ์ ์ ์๋์ง ์ ๋ฆฌํด๋ณด๋ คํฉ๋๋ค. ์ค๋๋ ํ์ดํ
์
๋๋ค ! ๐ฟ
1๏ธโฃ ์๋๋ก์ด๋์์ ์ปจํ
์คํธ(Context)๊ฐ ํ์ํ ์ด์
- ํน์ ์ดํ๋ฆฌ์ผ์ด์
์ด ํน์ ํ๋ก์ธ์ค์ mapping๋์ด ์คํ๋๊ณ ๊ด๋ฆฌ๋๊ณ ์๋ค๋ฉด, ๋ค๋ฅธ ๋งค๊ฐ์ฒด๋ ์ถ๊ฐ์ ์ธ ์ ๋ณด ํ์์์ด, ์์ (์ดํ๋ฆฌ์ผ์ด์
)์ ๊ด๋ฆฌํ๊ณ ์๋ ํ๋ก์ธ์ค์๊ฒ ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด๋ฅผ ๋ฌผ์ด๋ณด๊ฑฐ๋ ํ๋ก์ธ์ค์ ์ฐ๊ด๋ ๊ธฐ๋ฅ์ ํธ์ถํ ์ ์์ต๋๋ค.
- ํ์ง๋ง ์๋๋ก์ด๋(์๋๋ก์ด๋ ํ๋ซํผ)์์ ์ดํ๋ฆฌ์ผ์ด์
๊ณผ ํ๋ก์ธ์ค๊ฐ ๋ณ๋๋ก ๊ด๋ฆฌ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๋ OS์ ์ปค๋์ ์ํด ๊ด๋ฆฌ๋์ง๋ง, ๊ฐ๊ฐ์ ์ดํ๋ฆฌ์ผ์ด์
์ ActivityManagerService์ ์ํด ๊ด๋ฆฌ๋ฉ๋๋ค.
app ํ๋ก์ธ์ค์ system_server ํ๋ก์ธ์ค ๋์๊ตฌ์กฐ
- ์ฆ, ๊ฐ๊ฐ์ ์ดํ๋ฆฌ์ผ์ด์
๋ค์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ , ๊ด๋ฆฌํ๋ ์ฃผ์ฒด๋ ํ๋ก์ธ์ค๊ฐ ์๋, ๋ณ๋์ ์ดํ๋ฆฌ์ผ์ด์
์ธ ActivityManagerService์ธ ๊ฒ ์
๋๋ค. ๋ฐ๋ผ์, ์๋๋ก์ด๋์์ ์ดํ๋ฆฌ์ผ์ด์
์ด ์ง์ ์ ์ผ๋ก ํ๋ก์ธ์ค์๊ฒ ์ ๋ณด๋ฅผ ์์ฒญํ๊ฑฐ๋, ๊ธฐ๋ฅ ํธ์ถ์ ์์ฒญํ์ง ์๊ณ , ์ด ActivityManagerService๋ฅผ ํตํด์ ํ๊ฒ ๋ฉ๋๋ค.
- ActivityManagerService์ ๋ํ ์ดํด๋ฅผ ๋๊ธฐ์ํด, system_server ํ๋ก์ธ์ค์ app ํ๋ก์ธ์ค์ ๋์๊ตฌ์กฐ๋ฅผ ์ฒจ์ธํ๊ฒ ์ต๋๋ค.
- ActivityManagerService๋ system_server ํ๋ก์ธ์ค์์ ์คํ๋๋ ์๋ฒ์ด๊ณ , ActivityManager๋ app ํ๋ก์ธ์ค์์ ์คํ๋๋ ํด๋ผ์ด์ธํธ (์ฌ ํด๋ผ์ด์ธํธ)์
๋๋ค.
- ActivityManagerService์๊ฒ ์์ฒญ๋ ์์
์ system_server ํ๋ก์ธ์ค์์ ๊ด๋ฆฌ๋๊ณ , ActivityManager์๊ฒ ์ ๋ฌ๋ฉ๋๋ค. ์ด๋ ๊ฒ ActivityManager์๊ฒ ์ ๋ฌ๋ ์์
์ ์ค์ง์ ์ผ๋ก app ํ๋ก์ธ์ค์์ ์คํ๋ฉ๋๋ค.
- ์ฆ, "ํตํฉ ๋ฌธ์ ์ฑ๋"์ ์ญํ ์ ํ๋ ActivityManagerService๊ฐ ์ฌ๋ฌ ์ฑ์ ํตํฉํด์ ๊ด๋ฆฌํ๋๋ฐ, ์ด ๊ด๋ฆฌ๋ผ๋ ๊ฒ์ด, ์์ ์ด(ActivityManagerService๊ฐ) ๊ฐ๊ฐ์ ์ฑ์๊ฒ(ActivityManager์๊ฒ) ์์
์ ๋ช
๋ นํ์ฌ ๊ด๋ฆฌํ๋ ๊ตฌ์กฐ์ธ ๊ฒ์
๋๋ค.
Context๋ application, activity์ ๋ํ ์ ๋ถ์ฆ (ID)
-
ActivityManagerService์ ๋์ ๊ตฌ์กฐ์ ๋ํด ์ดํด ํ์
จ๋ค๋ฉด, ์ด์ ์ context๊ฐ ํ์ํ์ง ์ดํดํ์ค ์ ์์ผ์ค๊ฒ๋๋ค. ActivityManagerService ์
์ฅ์์ ์๊ฐํด๋ณด๋ฉด, ์์ ์๊ฒ ๋ค์ด์ค๋ ์ ๋ณด ์ ๊ทผ ์์ฒญ์ด๋ ์์คํ
ํจ์ ํธ์ถ ์์ฒญ์ด ๋๊ตฌ์(์ด๋ app์) ์์ฒญ์ธ์ง ํ์
ํด์ผ, ์ ๋๋ก๋ ๊ณณ์ ์์
์ ๋ช
๋ นํ ์ ์์ ๊ฒ์ด๋ ๋ง์
๋๋ค โผ๏ธ
-
์ฌ๊ธฐ์ "๋๊ตฌ์ ์์ฒญ"์ธ์ง๋ฅผ ํ์
ํ ์ ์๊ฒ ์ ๊ณต๋๋ ์ ๋ณด๊ฐ ๋ฐ๋ก Context ์
๋๋ค. ๊ฐ๊ฐ์ application, activity์ ๋ํ ์ ๋ถ์ฆ (ID)๋ก ์ดํดํ์๋ฉด ์ฝ์ต๋๋ค.
-
๊ด๋ จํด์ ์ด๋ค ์ ์ตํ ๊ธ์์ Context๊ฐ ํ์ํ ์ด์ ๋ฅผ Context์ ์ญํ ๋ก ์ ๋ฆฌ๋ฅผ ํด์ฃผ์
จ๋๋ฐ, ๋ช
์พํ์ฌ ๋ฌธ์ฅ์ ์ธ์ฉํด๋ด
๋๋ค.
์์ ์ด ์ด๋ค ์ดํ๋ฆฌ์ผ์ด์
์ ๋ํ๋ด๊ณ ์๋์ง ์๋ ค์ฃผ๋ ID ์ญํ
ActivityManagerService ์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ ํต๋ก ์ญํ
- ์ ๋ฌธ์ฅ์ผ๋ก ๋ฐ๊พธ์ด ๋ณด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
- ์์ ๊ณผ ๊ด๋ จ๋ ์ ๋ณด, ์ํ๋ฅผ ์ป๊ธฐ์ํด, ์๋ ค์ฃผ์ด์ผํ ์์ ์ ์ ๋ณด๋ฅผ ๋ด์ Context
- ์์คํ
์์์ ์ฌ์ฉํ๊ธฐ ์ํ ๋งค๊ฐ, ํธ๋ค๋ฌ์ธ Context
2๏ธโฃ ์๋๋ก์ด๋์ ์ปจํ
์คํธ(Context)
-
๊ณต์๋ฌธ์์ overview๋ฅผ ํ์ธํด๋ณด๋ฉด, Context๋ ์๋ ๋ฌธ์ฅ๋ค๋ก ์์ฝ๋ ์ ์์ต๋๋ค.
- Context ํด๋์ค๋ ์ถ์ ํด๋์ค์ด๋ฉฐ, ์ด์ ๊ตฌํ์ ์๋๋ก์ด๋ ์์คํ
์ด ์ ๊ณตํฉ๋๋ค.
- Context๋ application ํ๊ฒฝ์ ๊ดํ ๊ธ๋ก๋ฒ ์ ๋ณด๋ฅผ ์ ๊ทผํ๊ธฐ ์ํ ์ธํฐํ์ด์ค์
๋๋ค.
- Context๋ ์ดํ๋ฆฌ์ผ์ด์
์ ํนํ๋ ๋ฆฌ์์ค๋ ํด๋์ค์ ์ ๊ทผํ๊ฒ ํด์ค๋๋ค.
- Context๋ ์ดํ๋ฆฌ์ผ์ด์
๋ ๋ฒจ์ ์์
์ ์ํํ๊ธฐ ์ํ API๋ฅผ ํธ์ถํ๊ฒ ํด์ค๋๋ค.
- Activity ์คํ, Intent ๋ธ๋ก๋์บ์คํ
, Intent ์์ ๋ฑ๋ฑ
-
ํ๋ง๋๋ก, Context๋ ๊ฐ๊ฐ์ application, activity์ ๋ํ ์ ๋ณด ๋ฐ ๊ธฐ๋ฅ์ ๋ํ ์ ๊ทผ ๊ถํ์ ๊ฐ์ง ๊ฐ์ฒด๋ผ๊ณ ์ดํด๋ฉ๋๋ค ! ์ฆ,
- Context๋ฅผ ํตํด Activity ๊ทธ๋ฆฌ๊ณ Application์ ์ ๋ณด, ์ํ๋ฅผ ์ ์ ์์ต๋๋ค.
- Context๋ฅผ ํตํด Resource, Database, SharedPrefernces ๋ฑ์ ์์คํ
์์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
-
์๋๋ก์ด๋ Context๋ Application Context์ Activity Context๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
3๏ธโฃ ์ ํ๋ฆฌ์ผ์ด์
์ปจํ
์คํธ(Application Context)
4๏ธโฃ ์กํฐ๋นํฐ ์ปจํ
์คํธ(Activity Context)
5๏ธโฃ Context์ ๋ฉ๋ชจ๋ฆฌ ๋์, ๊ทธ๋ฆฌ๊ณ "Nearest Context"
Application Context์ Activity Context์ ๊ด๊ณ
- (์ ๊ทธ๋ฆผ ์ถ์ฒ) ์๋๋ก์ด๋ Context๋ Application Context์ Activity Context๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
- Application Context๋ ๊ฐ Application์ ์ ์ผํ๋ฉฐ, ์ข
์๋ฉ๋๋ค.
- Activity Context๋ ๊ฐ Activity์ ์ ์ผํ๋ฉฐ, ์ข
์๋ฉ๋๋ค.
- Activity๋ ์๋๋ก์ด๋ Application์ ๊ธฐ๋ณธ ๊ตฌ์ฑ์์๋ก, Application์ 1๊ฐ ์ด์์ Activity๋ฅผ ๊ฐ์ง๋๋ค. ์ฆ Activity๋ Application์ ์ข
์๋ฉ๋๋ค.
- ๋ฐ๋ผ์ Application Context ๋ฒ์ ์์ Activity Context๊ฐ ์กด์ฌํ๊ฒ๋ฉ๋๋ค.
- ์ฌ๊ธฐ์ "Nearest Context" ๊ฐ๋
์ด ๋ฑ์ฅํฉ๋๋ค.
"Nearest Context"
-
MyApplication์ "Nearest Context" : Application Context
-
MainActivity1์ "Nearest Context" : MainActivity1 Context
(Application Context, MainActivity1 Context ์ค์์ )
-
MainActivity2์ "Nearest Context" : MainActivity2 Context
(Application Context, MainActivit21 Context ์ค์์ )
Context์ ๋ฉ๋ชจ๋ฆฌ ๋์
6๏ธโฃ ์ถ์ ํด๋์ค Context
(์ ๊ทธ๋ฆผ ์ถ์ฒ)
#๏ธโฃ Reference