2024. 3. 21. 15:22, ๐ฑAndroid Study
๋ฐ์ํ
์๋๋ก์ด๋ 4๋ ์ปดํฌ๋ํธ(Component)
- ์๋๋ก์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฃผ๋ก ๋ค ๊ฐ์ง ์ฃผ์ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ
- ์ด๋ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ณ , ์๋๋ก์ด๋ ์์คํ ๊ณผ ์ด๋ป๊ฒ ์ํธ ์์ฉํ๋์ง๋ฅผ ๊ฒฐ์
- ๊ฐ ์ปดํฌ๋ํธ๋ ๋ ๋ฆฝ์ ์ธ ๊ธฐ๋ฅ์ ๊ฐ์ง๋ฉด์๋ ์๋ก ๊ธด๋ฐํ๊ฒ ์ฐ๋
1. ์กํฐ๋นํฐ (Activities)
- ์ฌ์ฉ์๊ฐ ์ง์ ์ํธ์์ฉํ๋ ํ๋ฉด
(์) ์ด๋ฉ์ผ ์ฑ์ ์ด๋ฉ์ผ ๋ชฉ๋ก์ ๋ณด์ฌ์ฃผ๋ ํ๋ฉด, ์ด๋ฉ์ผ ์์ฑ ํ๋ฉด ๋ฑ์ด ๊ฐ๊ฐ ๋ ๋ฆฝ๋ ์กํฐ๋นํฐ - ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)๋ฅผ ๋ด๋นํ๋ฉฐ, ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ์ํ๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํจ
2. ์๋น์ค (Services)
- ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ค๋ ์๊ฐ ๋์ ์คํ๋์ด์ผ ํ๋ ์์
์ ์ํ
(์) ์์ ์ฌ์์ด๋ ํ์ผ ๋ค์ด๋ก๋ - ์ฌ์ฉ์๊ฐ ์ง์ ์ ์ผ๋ก ์ธ์งํ์ง ๋ชปํ๋, ์ ํ๋ฆฌ์ผ์ด์ ์ '๋ฐฑ์คํ ์ด์ง'์์ ์ผ์ด๋๋ ์์ ์ ๋ด๋น
3. ๋ธ๋ก๋์บ์คํธ ๋ฆฌ์๋ฒ (Broadcast Receivers)
- ์๋๋ก์ด๋ ์์คํ
ํน์ ๋ค๋ฅธ ์ฑ์์ ๋ฐ์ก๋๋ ์ด๋ฒคํธ๋ ์ ๋ณด๋ฅผ ๋ฐ์ ์ ์๊ฒ ํด์ฃผ๋ ์ปดํฌ๋ํธ
(์) ๋ฐฐํฐ๋ฆฌ ๋ถ์กฑ ๊ฒฝ๊ณ , ํ๋ฉด ๊บผ์ง ๋ฑ์ ์์คํ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌ - ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ธ๋ก๋์บ์คํธ ๋ฉ์์ง๋ฅผ ๊ตฌ๋ ํ๊ณ , ํด๋น ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ๋ฐ์ํ ์ ์์
4. ์ฝํ ํธ ํ๋ก๋ฐ์ด๋ (Content Providers)
- ์ ํ๋ฆฌ์ผ์ด์
๊ฐ์ ๋ฐ์ดํฐ ๊ณต์
(์) ์ฐ๋ฝ์ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฐ๋ฝ์ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณต - ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ์ผ์ข ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ญํ ์ ํ๋ฉฐ, ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ณต์
์กํฐ๋นํฐ (Activity)
- ์กํฐ๋นํฐ(Activity)๋ ์๋๋ก์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ๊ตฌ์ฑ ์์
- ์ฌ์ฉ์๊ฐ ์ง์ ์ํธ ์์ฉํ๋ ์ฐฝ(window)์ ์๋ฏธ, ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฒฐ์ ์ง๋ ์ค์ถ์ ์ธ ์ญํ
- ๊ฐ ์กํฐ๋นํฐ๋ ๋ ๋ฆฝ์ ์ธ ํ๋ฉด์ผ๋ก์, ์ฌ์ฉ์์๊ฒ ๋ค์ํ ์์ ์ ์ํํ ์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณต
- ์ํธ ์์ฉ
- ์ฌ์ฉ์๊ฐ ์ ํ๋ฅผ ๊ฑฐ๋ ํ๋ฉด, ์ด๋ฉ์ผ์ ๋ณด๋ด๊ฑฐ๋ ์ง๋๋ฅผ ํ์ธํ๋ ๋ฑ์ ๋ค์ํ ๊ธฐ๋ฅ์ ์ํํ ๋๋ง๋ค ๋ฑ์ฅ - UI ๊ตฌ์ฑ
- ๊ฐ ์กํฐ๋นํฐ๋ ํ๋์ ์ฐฝ์ ๊ฐ์ง๋ฉฐ, ์ด ์ฐฝ์์ '๋ทฐ(View)'๋ผ ๋ถ๋ฆฌ๋ ๊ฐ์ฒด๋ค์ ํตํด ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ตฌ์ฑ
- ๋ทฐ ๊ฐ์ฒด๋ค์ ๋ฒํผ, ํ ์คํธ ํ๋, ์ด๋ฏธ์ง ๋ฑ ์ฌ์ฉ์๊ฐ ๋ณผ ์ ์๋ ๋ชจ๋ ์์๋ค์ ํฌํจ - ์ ํ๋ฆฌ์ผ์ด์
์ ์์
- ๋ชจ๋ ์๋๋ก์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํ ๊ฐ ์ด์์ ์กํฐ๋นํฐ๋ฅผ ํฌํจ
- ์ฑ์ด ์์๋ ๋ ์์คํ ์ ์ง์ ๋ '๋ฉ์ธ' ์กํฐ๋นํฐ๋ฅผ ์คํํ์ฌ ์ฌ์ฉ์์๊ฒ ์ฒซ ํ๋ฉด์ ๋ณด์ฌ์ค
์กํฐ๋นํฐ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์ฐ๊ฒฐ : setContentView()
- setContentView()๋ฅผ ์ด์ฉํ์ฌ ์กํฐ๋นํฐ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ View๋ฅผ ์ค์
๐กR.java ํ์ผ
- ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ปดํ์ผ ๋ ๋, ์๋ ์์ฑ๋จ
- res ๋๋ ํ ๋ฆฌ์ ์๋ ๋ชจ๋ ๋ฆฌ์์ค์ ๋ํ ๋ฆฌ์์ค IDํฌํจ
- ํ์: R.[๋ฆฌ์์ค์ ํ].[๋ฆฌ์์ค์ด๋ฆ]
- ์: R.layout.activity_main / R.string.hello / R.drawable.myimage
์กํฐ๋นํฐ ๋ฑ๋ก (Android Manifest)
<manifest>
<application>
<activity android:name=".FirstActivity"
android:label="First Activity">
</activity>
</application>
</manifest>
- ๋ชจ๋ Activity์ปดํฌ๋ํธ๋ Android Manifest.xml์ ๋ฑ๋ก๋์ด์ผ ํจ
- AndroidManifest.xml ํ์ผ์ ์๋๋ก์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ์ฅ๋ถ
(์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์ ์, ์์คํ ์ด ์ฑ์ ์ด๋ป๊ฒ ์คํํด์ผ ํ๋์ง๋ฅผ ์๋ ค์ฃผ๋ ์ค์ํ ์ง์์ฌํญ)
๐กAndroidMenifest์ ์ญํ
- ํจํค์ง ์ด๋ฆ ์ค์
- ์ฑ์ ๊ณ ์ ์๋ณ์๋ก์, ์ ํ๋ฆฌ์ผ์ด์ ์ ํจํค์ง ์ด๋ฆ์ ์ค์
- ์ด ์ด๋ฆ์ Google Play์ ๊ฐ์ ์ฑ ์คํ ์ด์์ ์ฑ์ ๊ตฌ๋ณํ๋ ๋ฐ ์ฌ์ฉ - ๊ตฌ์ฑ ์์ ์ ์ธ
- ์กํฐ๋นํฐ, ์๋น์ค, ๋ธ๋ก๋์บ์คํธ ๋ฆฌ์๋ฒ, ์ฝํ ํธ ํ๋ก๋ฐ์ด๋ ๊ฐ์ ๊ตฌ์ฑ์์๋ค์ ์กด์ฌ๋ฅผ ์์คํ ์ ์๋ฆผ - ๊ถํ ์ค์
- ์ฑ์ด ์ฌ์ฉ์์ ๊ธฐ๊ธฐ์์ ํน์ ์์ ์ ์ํํ๊ธฐ ์ํด ํ์ํ ๊ถํ์ ๋ช ์
- ๋ค๋ฅธ ์ฑ์ด ์ด ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ํธ์์ฉํ๊ธฐ ์ํด ํ์ํ ๊ถํ ์ค์
์กํฐ๋นํฐ ์๋ช ์ฃผ๊ธฐ (Activity Lifecycle)
๐ก ์๋ช ์ฃผ๊ธฐ ์์
1) onCreate()
- ์๋ช ์ฃผ๊ธฐ ํตํ์ด์ ์ต์ด 1๋ฒ๋ง ์ํ
- Activity๊ฐ ์์ฑ๋๋ฉด ๊ฐ์ฅ ๋จผ์ ํธ์ถ๋๋ฉฐ, ์ด ์ฝ๋ฐฑ๋ฉ์๋๋ ๊ผญ ์ค๋ฒ๋ผ์ด๋ฉํด์ ๊ตฌํํด์ผ ํจ
- ํ๋ฉด Layout ์ ์(xml ํ์ผ ์ธํ ), View ์์ฑ, Databinding ๋ฑ์ ์ด๊ณณ์ ๊ตฌํ
- ๋ฐ๋ผ์ Activity ์ต์ด ์คํ์ ํด์ผํ๋ ์์ ์ ์ํํ๊ธฐ์ ์ ํฉํจ
2) onStart()
- Activity๊ฐ ํ๋ฉด์ ํ์๋๊ธฐ ์ง์ ์ (ํ๋ฉด์ด ๋ง๋ค์ด์ง ๋) ํธ์ถ๋จ
- ๋งค์ฐ ๋น ๋ฅธ ์๋๋ก ์คํ๋๋ฉฐ, ์กํฐ๋นํฐ๊ฐ Resumed ์ํ์ ์ง์ ํจ๊ณผ ๋์์ onResume() ํธ์ถ
- ํ๋ฉด์ ์ง์ ํ ๋๋ง๋ค ์คํ๋์ด์ผ ํ๋ ์์ ์ ์ด๊ณณ์ ๊ตฌํ
3) onResume()
- Activity๊ฐ ํ๋ฉด์ ๋ณด์ฌ์ง๋ ์งํ์ (ํ๋ฉด์ด ์์๋ ํ) ํธ์ถ๋จ
- ํ์ฌ Activity๊ฐ ์ฌ์ฉ์์๊ฒ ํฌ์ปค์ค์ธ ๋์ด์๋ ์ํ
- onPause() ์ค์ ํด์ ๋๋ ๊ตฌ์ฑ์์๋ฅผ ๋ค์ ์ด๊ธฐํํ๊ณ , ์กํฐ๋นํฐ๊ฐ ์ฌ๊ฐ๋ ๋๋ง๋ค ํ์ํ ์ด๊ธฐํ ์์ ์ํ
4) onPause()
- Activity๊ฐ ํ๋ฉด์ ๋ณด์ฌ์ง์ง ์์ ์งํ์(์กํฐ๋นํฐ๋ฅผ ๋ ๋ ์ดํ์) ํธ์ถ๋จ
- ํ์ฌ Activity๊ฐ ์ฌ์ฉ์์๊ฒ ํฌ์ปค์ค์์ ๋์ด์๋ ์ํ (๋ฉํฐ ์๋์ฐ์ ๋ค๋ฅธ ์ฑ ํฌ์ปค์ค, ์ ํ)
- ๋ค๋ฅธ Activity๊ฐ ํธ์ถ๋๊ธฐ ์ ์ ์ ๊น! ์คํ๋๊ธฐ ๋๋ฌธ์ ๋ฌด๊ฑฐ์ด ์์ ์ ์ํํ์ง ์๋๋ก ์ฃผ์ํด์ผํจ
- ๋ฐฐํฐ๋ฆฌ ์๋ช ์ ์ํฅ์ ๋ฏธ์น๋ ์์คํ ๋ฆฌ์์ค, ํ๋์จ์ด ์ผ์ ํ ๋น์ ํด์
- !! ์ฌ๊ธฐ์ UI๋ฅผ ํด์ ํ๋ฉด ๋ฉํฐ์๋์ฐ์์๋ UI๊ฐ ์ค์ง๋๋ฏ๋ก ๋ฐ๋์ onStop()์์ ์ค์งํ๋๋ก ํ์
5) onStop()
- Activity๊ฐ ๋ค๋ฅธ Activity์ ์ํด 100% ๊ฐ๋ ค์ง ๋ ํธ์ถ๋๋ ๋ฉ์๋ (ex. ํ ํค ๋๋ฅธ ๊ฒฝ์ฐ)
- ํ ํค๋ฅผ ๋๋ฅด๋ ๊ฒฝ์ฐ, ๋ค๋ฅธ ์กํฐ๋นํฐ๋ก์ ์ด๋์ด ์๋ ๊ฒฝ์ฐ๊ฐ ์์
- ์ด ์ํ์์ Activity๊ฐ ํธ์ถ๋๋ฉด, onRestart() ๋ฉ์๋๊ฐ ํธ์ถ๋จ
- ํ์ํ์ง ์์ ๋ฆฌ์์ค๋ฅผ ํด์ ํ๊ฑฐ๋ ์กฐ์
- CPU๋ฅผ ๋น๊ต์ ๋ง์ด ์๋ชจํ๋ ์์ ์ ์ข ๋ฃ
- ์ ๋๋ฉ์ด์ ์ผ์์ค์ง, GPS ์ฌ์ฉ ์ ๋ฐฐํฐ๋ฆฌ๋ฅผ ์ ์ฝํ๊ธฐ ์ํ ์์น์ธ์ '์ธ๋ฐํ ์์น -> '๋๋ต์ ์ธ ์์น' ์ ํ
- ์ฌ์ฉ์ ๋ฐ์ดํฐ ์ ์ฅ, ๋คํธ์ํฌ ํธ์ถ, db ํธ๋์ญ์ , UI ์ค์ง ๋ฑ
6) onRestart()
- onStop()์ด ํธ์ถ๋ ์ดํ์ ๋ค์ ๊ธฐ์กด Activity๋ก ๋์์ค๋ ๊ฒฝ์ฐ์ ํธ์ถ๋๋ ๋ฉ์๋
- onRestart()๊ฐ ํธ์ถ๋ ์ดํ ์ด์ด์ onStart()๊ฐ ํธ์ถ๋จ
7) onDestroy()
- Activity๊ฐ ์์ ํ ์๋ฉธ๋๊ธฐ ์ ์ ํธ์ถ๋๋ ๋ฉ์๋ (์กํฐ๋นํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ฑฐ๋ ๋)
- ์ฌ์ฉ์: finish(), onBackPressed()(๊ธฐ์กด ์กํฐ๋นํฐ์ onResume()๊น์ง ํธ์ถ๋ ํ onDestroy() ํธ์ถ)
- ์์คํ : ๋ฉ๋ชจ๋ฆฌ๋ถ์กฑ(ํ๋ก์ธ์ค ์ข ๋ฃ)
- onStop(), onDestroy() ๋ฉ์๋๋ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ์ด ๋ฐ์ํ๋ฉด ์คํต๋ ์ ์์
๐ก ์ํฉ์ ๋ฐ๋ฅธ ์๋ช ์ฃผ๊ธฐ ํธ์ถ
์กํฐ๋นํฐ ์์ฑ์
- onCreate() : ์์ฑ๋ ํ๋ฉด ์์๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋
- onStart(), onResume() : ํ๋ฉด์ ์์๋ฅผ ๋ํ๋ด๊ณ ์ฌ์ฉ์์ ์ํธ์์ฉ ์์ (Resumed ์ํ)
์กํฐ๋นํฐ๋ฅผ ํ๋ฉด์์ ์ ๊ฑฐ์
- onPause(), onStop() : ๋ค๋ก ๊ฐ๊ธฐ, finish()๋ฅผ ์คํํ ๋ ๋์ ์คํ
- onDestroy() : ์ต์ข ์ ์ผ๋ก ์กํฐ๋นํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ฑฐ๋จ
์กํฐ๋นํฐ๋ฅผ ์ข ๋ฃํ์ง ์๊ณ ๋ค๋ฅธ ์กํฐ๋นํฐ ์คํ ์ (ํ๋ฉด์ด ๋ชจ๋ ๊ฐ๋ ค์ก์ ๋)
- onPause(), onStop() : ํ์ฌ ์กํฐ๋นํฐ๋ฅผ ์ข ๋ฃํ์ง ์๊ณ ์๋ก์ด ์กํฐ๋นํฐ๊ฐ ๋ง๋ค์ด ์ง๋ (Stopped ์ํ)
- onStart(), onResume() : ๋ ๋ฉ์๋๊ฐ ์ฐ์์ ์ผ๋ก ์คํ๋๊ณ Resumed ์ํ๋ก ๋ณ๊ฒฝ๋จ
์กํฐ๋นํฐ๋ฅผ ์ข ๋ฃํ์ง ์๊ณ ๋ค๋ฅธ ์กํฐ๋นํฐ ์คํ ์ (ํ๋ฉด์ด ๋ชจ๋ ๊ฐ๋ ค์ง์ง ์์์ ๋)
- onPause() : ํ๋ฉด์ด ์์ ํ ์ฌ๋ผ์ง ๊ฒ์ ์๋ (Paused ์ํ)
- onResume() : ์ ์งํ ๊ฒ์ด ์๋๋ฏ๋ก onStart()๋ฅผ ๊ฑฐ์น์ง ์๊ณ ๋ฐ๋ก onResume์ผ๋ก ๊ฐ (Resumed ์ํ)
์กํฐ๋นํฐ Kill ๊ฐ๋ฅ์ฑ
kill ๊ฐ๋ฅ์ฑ | ํ๋ก์ธ์ค ์ํ | Activity ์ํ |
์ต์ | Foreground (ํฌ์ปค์ค๊ฐ ์๊ฑฐ๋ ํฌ์ปค์ค๋ฅผ ๊ฐ์ ธ์ฌ ์์ ) | Created, Started, Resumed |
์ค๊ฐ | Background (ํฌ์ปค์ค ์์ค) | Paused |
์ต๋ | Background (๋ณด์ด์ง ์์) Empty |
Stopped Destroyed |
- ์์คํ ์ RAM(๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ)์ ์ฌ์ ๊ณต๊ฐ์ด ํ์ํ๋ฉด ์กํฐ๋นํฐ๋ฅผ ์ง์ ์ข ๋ฃํ์ง ์๊ณ ํ๋ก์ธ์ค๋ฅผ kill
- ํ๋ก์ธ์ค๊ฐ ๋ด๋นํ๋ ๋ชจ๋ ์กํฐ๋นํฐ๊ฐ kill๋จ
์กํฐ๋นํฐ ์คํ (Activity stack)
๐กTask
- ์๋๋ก์ด๋์์๋ Task(ํ์คํฌ)๋ฅผ ์ด์ฉํ์ฌ ํ๋ฉด์ ์์์ ํ๋ฆ์ ๊ด๋ฆฌ
- Task : ์ดํ๋ฆฌ์ผ์ด์ ์์ ์คํ๋๋ ์กํฐ๋นํฐ๋ฅผ ๊ธฐ๋กํ๋ ์คํ
- ์กํฐ๋นํฐ๋ฅผ ์ฌ๋ฌ ๊ฐ ํธ์ถ ํ ๋๋ง๋ค ์คํ์ด ์์
- ์ฌ์ฉ์๊ฐ ํ์ฌ ๋ณด๊ณ ์๋ ํ๋ฉด ์กํฐ๋นํฐ๊ฐ ์คํ์ ๊ฐ์ฅ ์์ชฝ
- Back ๋ฒํผ์ ๋๋ฅด๋ฉด ๊ฐ์ฅ ์ ํ์ฌ ์กํฐ๋นํฐ๊ฐ ์ ๊ฑฐ๋๊ณ , ๊ทธ ์๋์ ์กํฐ๋นํฐ๊ฐ ํ๋ฉด์ ์ถ๋ ฅ
- ๊ฐ์ฅ ์๋ base activity(๊ธฐ๋ณธ ์กํฐ๋นํฐ)๊ฐ ์๊ณ , ์ฃผ๋ก ํ ํ๋ฉด์ด ๋ค์ด๊ฐ
๐กํ์คํฌ vs ํ๋ก์ธ์ค
Process
- ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ ๋ฆฝ์ ์ธ ์คํ ๋จ์(ํ๋ฆ)
- ํด๋น ์ดํ๋ฆฌ์ผ์ด์ ์ ์กด์ฌํ๋ ๋ชจ๋ ์คํ์ฝ๋์ ๊ฐ์ฒด๋ฅผ ํฌํจ
Task
- ํ๋ก์ธ์ค์ ๋ฌด๊ดํ๊ฒ ์คํ๋๋ ์กํฐ๋นํฐ์ ์ ๋ณด๋ฅผ ์ ์ฅ
- ์ดํ๋ฆฌ์ผ์ด์ ํ๋ฉด ํ๋ฆ ๊ด๋ฆฌ
- ์ดํ๋ฆฌ์ผ์ด์ ์์ ์คํ๋๋ ์กํฐ๋นํฐ๋ง ํฌํจ (๋ค๋ฅธ Process์ ์กํฐ๋นํฐ ๋ํ ํฌํจ ๊ฐ๋ฅ)
๐ก์กํฐ๋นํฐ ์คํ (Activity Stack)
- ์๋๋ก์ด๋ ๊ณต์๋ฌธ์์๋ ๋์์์ง๋ง, ๊ฐ๋
๋ง ์๊ณ ๋๋๋ก ๊ฑด๋ค์ง ์๋ ๊ฒ ์ข์
(๊ผฌ์ผ ์ ์์ผ๋ฉฐ, ์ฌ์ฉ์๋ค์ด ์์ํ๋ ์ผ๋ฐ์ ์ธ ๋์์์ ๋ฒ์ด๋ ์ ์์ด ๋ถํธํจ ์ผ๊ธฐ) - ๊ตณ์ด ์ค์ ํ๊ณ ์ถ๋ค๋ฉด
1. AndroidManifest.xml ํ์ผ์์ launchMode ์ค์ <activity android:launchMode="์ค์ ๊ฐ">
2. Intent Flag๋ฅผ ์ด์ฉ
Standard
- ์ค์ ํ์ง ์์์ ์ ๊ธฐ๋ณธ๊ฐ
- ํธ์ถํ๋ ๋ชจ๋ ์กํฐ๋นํฐ๊ฐ ์์ ์์ (LIFO, ํ์ ์ ์ถ)
- ์ธ์คํด์ค๊ฐ ํธ์ถํ ๋๋ง๋ค ์๊น
SingleTop
- ์คํ ๋ค๋์ ์ ์ฌํ๋, ๊ฐ์ฅ ์(Top)์ ์กํฐ๋นํฐ๋ ์ค๋ณตํด์ ์์ด์ง ์์
- ๋ฐ๋ผ์ ์ค๋ณต์ ๊ฒฝ์ฐ ์์คํ ์ ํ๋์ ์ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์๊ณ ๊ธฐ์กด ์ธ์คํด์ค๋ก ๋ผ์ฐํ
- ๊ฐ์ฅ ์์ ์กํฐ๋นํฐ๊ฐ ์๋๋ผ๋ฉด ์ค๋ณต์ด ๊ฐ๋ฅํจ
SingleTask
- ์์ฌ์๋ ์คํ์ ๋จ์์๊ณ , ์๋ก์ด ์คํ ๊ณต๊ฐ์ด ํ๋ ๋ ์๊น
- ์๋ก ์๊ธด ์คํ ๊ณต๊ฐ์ ๋ค๋ฅธ ์กํฐ๋นํฐ ์คํ์ด ์์
- ํ๋์ ์ธ์คํด์ค๊ฐ ์ด๋ฏธ ์์ ์ ์๋ค๋ฉด ์์คํ ์ ์ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์๊ณ ๊ธฐ์กด ์ธ์คํด์ค๋ก ๋ผ์ฐํ
- ์ฌ์ฉ์ ์ ์ฅ์์ ์คํ ๋ค๋์ ๋๊ฐ์ด ๋๊ปด์ง
SingleInstance
- ์์ฌ์๋ ์คํ์ ๋จ์์๊ณ , ์๋ก์ด ์คํ ๊ณต๊ฐ์ด ํ๋ ๋ ์๊น
- ์๋ก ์๊ธด ์คํ ๊ณต๊ฐ์ ๋ค๋ฅธ ์กํฐ๋นํฐ ์คํ์ด ์์ด์ง ์์ (SingleTask์์ ์ฐจ์ด์ )
- ๋ค๋ฅธ ์กํฐ๋นํฐ๊ฐ ํธ์ถ๋๋ฉด, ๊ธฐ์กด์ ์๋ ์คํ๊ณต๊ฐ์ ์์
๋ฐ์ํ
๐ฌ C O M M E N T