# Activity
์๋๋ก์ด๋ ์ปดํฌ๋ํธ(์กํฐ๋นํฐ, ์๋น์ค, Broadcast Receiver, ContetProvider) ์ค ํ๋๋ก, AppCompatActivity๋ฅผ ์์๋ฐ์์ ๋ง๋ ๋ค. ์๋ช ์ฃผ๊ธฐ๋ ์๋์ ๊ฐ๋ค.
์กํฐ๋นํฐ๊ฐ ๋ฐฑ์คํ์์ ๋ ์๊ฐ๊ฑฐ๋, ํ๋ฉด ํ์ ๊ฐ์ ๊ฒฝ์ฐ(๊ตฌ์ฑ์์๊ฐ ๋ฐ๋๋ค๊ณ ์๊ธฐํ๋ ๋ถ๋ถ)์๋ onPause -> onStop -> onDestroy-> onCreate -> onStart -> onResume ๊ณผ์ ์ ๊ฑฐ์น๋๋ฐ, AppCompatActivity์์ savedInstance๋ฅผ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ ์ฅ๋ ๊ฒ ์์ผ๋ฉด onCreate์์ ๊บผ๋ด์์ ์ธ ์ ์๋ค. ์ด๋ onSaveInstanceState๋ onStop๊ณผ onDestroy ์ฌ์ด์ ํธ์ถ๋๊ธฐ ๋๋ฌธ์ ์ํ์ ๋ณด ์ ์ฅ์ด ๊ฐ๋ฅํ๋ค.
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt("value", value)
}
// ๊บผ๋ด์ธ๋๋ onCreate์์
value = savedInstanceState?.getInt("value") ?: 0
onCreate์์๋ง savedInstanceState๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๊ฐ๊ธฐ๋๋ฌธ์ ๋ค๋ฅธ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋์์ ์ฌ์ฉํ ์ ์๋ค.
๊ตฌ์ฑ์์๊ฐ ๋ฐ๋๋ ๊ฒ ์๋๋ผ ๋จ์ํ ๋ฐฑ์คํ์ผ๋ก ๋ค์ด๊ฐ๊ฒ์ด๋ผ๋ฉด onPause-> onStop-> onRestart-> onStart-> onResume ๊ณผ์ ์ ๊ฑฐ์น๋ค.
๊ตฌ์ฑ์์๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ์ Intent๋ฅผ ํตํด ์ด๋ค์ง๋ค.
# Intent
๋ช ์์ ์ธํ ํธ, ์์์ ์ธํ ํธ๋ก ๊ตฌ๋ถํ ์ ์๋ค.
๋ช ์์ ์ธํ ํธ๋ ์คํํ ๋์์ด ๋ช ํํ๊ฒ ์ ํด์ ธ์๋ ๊ฒฝ์ฐ๋ค.
val intent = Intent(this, SubActivity::class.java)
intent.putExtra("Key", "๋ช
์์ ์ธํ
ํธ")
startActivity(intent)
// ์ธ๋ถ ์ฑ์ ์ปดํฌ๋ํธ๋ฅผ ์คํํ ๊ฒฝ์ฐ๋ ๋ช
์์ ์ธํ
ํธ๋ฅผ ์ฌ์ฉํ๋ค.
var intent = Intent()
var name = ComponentName("com.sample.a","com.sample.a.OuterActivity")
intent.setComponent(name)
startActivity(intent)
์ด๋ ComponentName์ ์ฌ์ฉํ ์ปดํฌ๋ํธ์ ํจํค์ง ๋ช ๊ณผ ํด๋์ค ๋ช ์ ๋ฐ๋๋ค.
/**
* Create a new component identifier.
*
* @param pkg The name of the package that the component exists in. Can
* not be null.
* @param cls The name of the class inside of <var>pkg</var> that
* implements the component. Can not be null.
*/
public ComponentName(@NonNull String pkg, @NonNull String cls) {
if (pkg == null) throw new NullPointerException("package name is null");
if (cls == null) throw new NullPointerException("class name is null");
mPackage = pkg;
mClass = cls;
}
์์์ ์ธํ ํธ๋ ์ก์ ๊ณผ ๋ฐ์ดํฐ๋ง ์ง์ ํด์ฃผ๊ณ , ์ด๋ค ๋์์ ํธ์ถํ ์ง๋ ์์คํ ์ ๋งก๊ธฐ๋ ๊ฒฝ์ฐ๋ค.
์ง๋๋ฅผ ํธ์ถํ๊ฑฐ๋, ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ์ ํ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ๊ฐ ์ด ์์์ ํด๋นํ๋ค.
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com/"))
์ด intent๋ฅผ ์คํํ๋ฉด, ์ฌ์ฉํ ์ ์๋ ๋ธ๋ผ์ฐ์ ๋ชฉ๋ก์ด ๋์ค๋ฉด์ ์์คํ ์ด ์ด๋ค ์ฑ์ผ๋ก ์คํํ ๊ฒ์ธ์ง ๋ฌป๋ ํ์ ์ด ๋์จ๋ค.
์ฒซ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌํ๋๊ฑด ์ํํ ์ก์ ์ ์ง์ ํ๋ ๊ฒ์ด๋ค. ACTION_VIEW๋ ๋ฐ์ดํฐ์ URL๋ก ์ด๋ค ์กํฐ๋นํฐ๊ฐ ์ ์ผ ์ ์ ํ ์ง ์ฐพ์์ ์คํํ๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ๊ณ ์๋ค.
๊ตฌ์ฑ์์๋ผ๋ฆฌ ๋๊ธฐ๋ ์ธํ ํธ ๋ง๊ณ , AndroidManifest.xml์ ์ง์ ๋ฃ๋ Intent๊ฐ ์๋๋ฐ, ์ธํ ํธ ํํฐ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
๋ธ๋ก๋์บ์คํธ ๋ฆฌ์๋ฒ๊ฐ ์ธ์ํ ์ ์๋ ์ก์ ๋ค์ ๋ณดํต ์ธํ ํธ ํํฐ๋ก ์ง์ ํด์ ๋ฃ๋๋ค. Launcher ๋ฅผ ์ค์ ํ๋ ๊ฒ๋ ์ธํ ํธ ํํฐ๋ค.
ํ ์ ์๋๊ฑด ๋์ผํ๊ณ , ํน์ ์ธํ ํธ๋ฅผ ๋ฐ์์ง, ๋ง์ง ๊ฒฐ์ ํ ์ ์๋ค. ์ ์ ์ผ๋ก ์ ์ธํ๊ธฐ ๋๋ฌธ์ ์ผ๋จ ์ฑ์ด ์ค์น๋๊ณ ๋๋ฉด ์์ ํ ์ ์๊ฒ๋๋ค.
์ธํ ํธ์ ๊ตฌ์ฑ์์๋ ์๋์ ๊ฐ๋ค. ์ธํ ํธ์ ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ Category๋ ์๊ณ , ๋ฒ๋ค์ ํตํด ๊ฐ์ ์ ๋ฌํ Extra๋ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ธํ ํธ๊ฐ ๋์ํ๋ ๋ฐฉ์์ ๊ฒฐ์ ํ flag๋ ์๋ค.
private static final String ATTR_ACTION = "action";
private static final String TAG_CATEGORIES = "categories";
private static final String ATTR_CATEGORY = "category";
private static final String TAG_EXTRA = "extra";
private static final String ATTR_TYPE = "type";
private static final String ATTR_IDENTIFIER = "ident";
private static final String ATTR_COMPONENT = "component";
private static final String ATTR_DATA = "data";
private static final String ATTR_FLAGS = "flags";
# Task
์กํฐ๋นํฐ๋ Task๋ก ๊ด๋ฆฌ๋๋ค.
๊ด๋ จ๋ ์กํฐ๋นํฐ๋ค์ ๋ฌถ์ด์ ๊ด๋ฆฌํ๊ณ , ํจํค์ง๊ฐ ์๋ก ๋ค๋ฅด๋๋ผ๋ ํ๋์ ํ๋ฆ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ Task๋ค. Stack ํํ๋ก ๊ด๋ฆฌ๋๊ธฐ ๋๋ฌธ์ BackStack์ด๋ผ๋ ์ฉ์ด๊ฐ ์กด์ฌํ๋ค. ์ ์์ ์ ์์ํ๋ฉด ์ด์ ์์ ์ด BackStack์ผ๋ก ๋ค์ด๊ฐ๊ณ ์์ํ ์์ ์ด Top์ ์์นํ๋ค. ๋ ธ๋์ ๋ฐ์ค๋ก ๊ฐ์ธ์ ธ ์๋๊ฒ Top์ด๊ณ , ๊ทธ ๋ฐ์ ๊ตฌ์ฑ์์๋ค์ onStop์ํ๋ก BackStack์ ์กด์ฌํ๊ณ ์๋ค. ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋ฉด top์ด pop๋๊ณ ๋ฐฑ์คํ์์ ์กํฐ๋นํฐ๊ฐ ์ฌ๋ผ์ค๋ฉฐ, root activity๊น์ง ๋ด๋ ค๊ฐ์ popํ๋ฉด Task๊ฐ ์ข ๋ฃ๋๋ค. Android 12 ๋ถํฐ๋ root activity์์ pop์ํค๋๊ฒ onDestroy๋ก ๋์ํ์ง ์๋๋ค๋ ์ ์ด ํน์ด์ ์ด๋ค.
์ด๋ฐ Task ํ๋ฆ์ ๊ด๋ฆฌํ๊ธฐ ์ํด ์คํ๋ชจ๋๊ฐ ์๋ค. ์ธํ ํธ ํํฐ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์๊ณผ, ์ธํ ํธ Flag๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์ ์ด๋ ๊ฒ ๋๊ฐ์ง๋ก ๋๋๋ค. ๋ชจ๋ ๋ชจ๋๋ฅผ ๋ ๋ฐฉ์ ๋ ๋ค ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ์๋๊ณ ์ผ๋ถ ๋ชจ๋๋ ํ ๋ฐฉ์์ผ๋ก๋ง ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
# ์คํ๋ชจ๋
# AndroidManifest.xml์์ ์ ์ํ ์ ์๋ ๋ชจ๋ 5๊ฐ์ง
# standard
๋ํดํธ ๋ชจ๋๋ค. ์กํฐ๋นํฐ๋ ๋ฌด์กฐ๊ฑด ์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ด์ ์คํ์ ์์ด๊ฒ ๋๋ค. ์ค๋ณต๋์ด ์์ฑ๋๊ณ ์ค๋ณต๋ ์ธ์คํด์ค๋ค์ ๊ฐ๊ฐ ๋ ๋ฆฝ๋ ์ธ์คํด์ค๋ค.
# singleTop
์์ฑํ ์ธ์คํด์ค๊ฐ ์ด๋ฏธ top์ด๋ผ๋ฉด ์๋ก ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์๊ณ ๋์ onNewIntent๋ฅผ ํธ์ถํด์ ์ ์ธ์คํด์ค ๋์ ํ์ฌ ์ธ์คํด์ค๋ก ๋ผ์ฐํ ํ๋ค. ์คํ์ top์ด ํ์ฌ ์ธ์คํด์ค์ธ๊ฒฝ์ฐ์๋ง ์ค๋ณต๋ฐฉ์ง๊ฐ ๋๊ณ ๋ฐฑ์คํ์ ๋ค์ด์๋ ์ค๋ณต ์ธ์คํด์ค๋ ๊ณ ๋ คํ์ง์๋๋ค.
A-B-A๋ก ์คํ์ด ์์ฌ์๋ ์ํ์ด๊ณ , A ์ธ์คํด์ค๋ฅผ ์๋ก ์์ฑํ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ์ด๋ A-B-A-A๋ก ๋์ง์๊ณ A-B-A ๊ทธ๋๋ก์ง๋ง onNewIntent๋ฅผ ํธ์ถํ๋ค. ์ด์ ์คํ์ ์์ฌ์๋ A๋ ๊ด๋ จ์๋ค๋ ์ด์ผ๊ธฐ๋ค. ์ ์ธํ ํธ๊ฐ ์ ๋ฌ๋๊ธฐ ๋๋ฌธ์ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง์๋๋ค ๋ฟ์ด์ง onNewIntent๋ฅผ ํธ์ถํ๊ธฐ ์ ์ธ์คํด์ค๋์ ๋ค๋ฅธ Intent๋ฅผ ๊ฐ์ง ์ ์๋ค๊ณ ๋ด์ผ๋๋ค.
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
}
์ฌ๊ธฐ์ intent๋ฅผ ์ก์์ setIntent๋ฅผ ํด์ฃผ๋ฉด onResume ๋ ์๋ก์ด intent๋ฅผ ๊ฐ์ง ์ธ์คํด์ค๊ฐ ๋๋ค.
# singleTask
์์น์ ์๊ด์์ด ๋์ผํ ์ธ์คํด์ค๊ฐ ๊ฐ์ Task์ ์คํ์ ์์ผ๋ฉด, ๊ฑฐ๊ธฐ๋ก onNewIntent๋ฅผ ํธ์ถํ๋ฉด์ ๋ผ์ฐํ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์์ ์์ฌ์๋ ์ธ์คํด์ค๋ค์ ๋ชจ๋ ๋ ๋ฆฐ๋ค.
A-B-C-D ์ ๊ฒฝ์ฐ์์ A๋ฅผ ์๋ก singleTask๋ก ํธ์ถํ๋ค๋ฉด, B-C-D๊ฐ ๋ค ๋ ์๊ฐ๊ณ A๋ง ๋จ๋๋ค.
๋ค๋ง ๋์ผ Task๋ด์ ์์ฌ์๋ ์คํ์ ํ์ ๋๋ค.
Task๊ฐ ๋ ๊ฐ์ด๊ณ , ๊ฐ๊ฐ์ Task๋ด์ ๋์ผํ ์ธ์คํด์ค๊ฐ ์์ ๊ฒฝ์ฐ, singleTask๋ ํธ์ถ ํ Task์์๋ง ์ ํจํ๋ค.
๋ค๋ฅธ Task์ ์๋ ๊ฒฝ์ฐ๊ฐ ์กฐ๊ธ ๋ณต์กํ๋ฐ
singleTask๋ก ์ง์ ํ ์กํฐ๋นํฐ X,Y๊ฐ ๋ค๋ฅธ Task์ ์์ฌ์๊ณ , Y๋ฅผ ํธ์ถํด์ ๋ถ๋ฌ์๋ค๋ฉด, Y๊ฐ ๋ด๊ฒจ์๋ Task๊ฐ ๋ถ๋ ค์ค๊ฒ๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ทธ๋ฆผ์ 1-2-Y๊ฐ ๋๋๊ฒ ์๋๋ผ, 1-2-X-Y๊ฐ ๋๊ธฐ ๋๋ฌธ์ top์ Y๊ฐ ์๋ ์ํ์์ ๋ค๋ก๊ฐ๊ธฐ๋ฅผ ํ๋ค๋ฉด 2๊ฐ ์๋๋ผ X๊ฐ ๋ํ๋๋ค.
# singleInstance
์ด๊ฑด singleTask์ ๋ฒ์๋ฅผ ์ ์ฒด๋ก ํ์ฅํ ๊ฒ์ด๋ค.
๋ชจ๋ Task์์ ๋จ ํ๋์ ์ธ์คํด์ค๋ง ํ์ฉํ๋ค.
# singleInstancePerTask
์กํฐ๋นํฐ ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋, Task์ root activity๋ก๋ง ์คํํ ์ ์๋ FLAG๋ค. ๊ทธ๋ฌ๋ฏ๋ก Task๊ฐ ํ ์กํฐ๋นํฐ๋ง ๊ฐ์ง ์ ์๊ฒ๋๋ ๋ชจ๋๋ค.
# noHistory
launchMode๋ก ์ค์ ํ๋ ๋ชจ๋๋ ์๋๋ค. ๊ทธ๋ฅ History๋ฅผ ๋จ๊ธฐ์ง ๋ง๋ผ๊ณ ์ง์ ํ๋ ๊ฒ์ผ๋ก, task stack์ ์์ด์ง ์๋๋ค.
# ์ธํ ํธ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ ์
์ธํ ํธ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด Manifestํ์ผ์ ์ ์ํ ๋ ๋ณด๋ค ๋ ๋ํ ์ผํ๊ฒ ์ ์ํ ์ ์๋ค. ๋๋ฌด ์์ด ๋ง์ผ๋๊น ๊ณต์๋ฌธ์์ ์๊ฐ๋ ๊ฒ๋ค๋ง ์ ๋ฆฌํ๊ฒ ๋ค.
# FLAG_ACTIVITY_NEW_TASK
= singleTask์ ๋์ผํ๊ฒ ์ฌ์ฉํ ์ ์๋ ์ต์ ์ด๋ค. ๊ทผ๋ฐ ์ฐจ์ด์ ์ผ๋ก๋ ํญ์ ์ธ์คํด์ค๊ฐ ์ Task์์ ๋์ํ๋ค๋ ์ ์ด๋ค.
# FLAG_ACTIVITY_SINGLE_TOP
์ผ๋จ ์์ฑํ๊ณ , ๋ง์ฝ ๋ฐฑ์คํ์ top์ด ํ์ฌ ์กํฐ๋นํฐ๋ผ๋ฉด singleTop๊ณผ ๋์ผํ ์ต์ ์ด๋ค.
# FLAG_ACTIVITY_CLEAR_TOP
์ด๊ฑด flag๋ก๋ง ์ค์ ํ ์ ์๋ ๋ชจ๋๋ค. ์คํํ ์ธ์คํด์ค๊ฐ ์ด๋ฏธ Task์ ์กด์ฌํ๋ค๋ฉด ์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ๋์ ์ ๊ทธ ์์์๋ ๋ชจ๋ ์กํฐ๋นํฐ๋ฅผ ๋ ๋ฆฌ๊ณ onNewIntent๋ก ๋ผ์ฐํ ํ๋ค.
์๋ฅผ ๋ค์ด๋ณด๊ฒ ๋ค.
A-B-C-D๋ก ์คํ์ ์์ฌ์๊ณ , ์ฌ๊ธฐ์ B๋ฅผ CLEAR_TOP์ผ๋ก ์คํํ๋ค๊ณ ๊ฐ์ ํ์. ๊ทธ๋ฌ๋ฉด C-D๋ ๋ ์๊ฐ๊ฒ๋๋ฏ๋ก A-B๋ง ๋จ๊ฒ๋๋ค. B๋ ์ด๋ onNewIntent๋ฅผ ๋ฐ๊ฒ๋๋ค. ๊ทผ๋ฐ ๋ง์ฝ ์คํ top์ ์๋ ์กํฐ๋นํฐ๋ฅผ CLEAR_TOP์ผ๋ก ์คํํ๊ฒ ๋๋ค๋ฉด?
singleTop๊ณผ ๋ค๋ฅด๊ฒ ์ด๋๋ ๋ถ๊ธฐ๊ฐ ๋๋๋ค. ํฌ๊ทธ๋ผ์ด๋์ ๋ณด์ด๋ ์ค์ด๋ผ๋ฉด ํ์ฌ ์ธ์คํด์ค๋ฅผ ์ฌ์ฌ์ฉํ๊ณ , ๋ฐฑ๊ทธ๋ผ์ด๋์ ์๋ค๊ฐ ๋์์จ๋ค๋ฉด ์ฌ์ฌ์ฉํ์ง์๊ณ ์ ๊ฑฐํ๋ค ์ธ์คํด์ค๋ฅผ ์๋ก ๋ง๋ ๋ค. ์ด๊ฒ singleTop๊ณผ์ ์ฐจ์ด์ ์ด๋ค. ํญ์ ์ต์์์ ์กํฐ๋นํฐ๋ฅผ ๋จ๊ฒจ๋ ์ ์๋๊ฒ ์ฅ์ ์ด๋ผ๊ณ ํ ์ ์๊ฒ ๋ค.
๊ทธ๋์ NEW_TASK๋ SINGLE_TOP๋ ๊ฐ์ด ์ฐ๋๊ฒ ํจ์จ์ ์ด๋ค.
val intent = Intent(this, SubActivity::class.java).apply {
flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK
}
NEW_TASK์ ๊ฐ์ด ์ฌ์ฉํ๋ค๋ฉด ์กํฐ๋นํฐ๊ฐ ๋ค๋ฅธ Task์ ์์๋๋, ํน์ ์กํฐ๋นํฐ๋ก ์ด๋ํ๋๋ผ๋ CLEAR_TOP์์ฑ์ผ๋ก ์ธํด ์คํ์ ์ต์์๋ก ์ฌ๋ฆด ์ ์๋ค๋ ์ฅ์ ์ด ์๊ธด๋ค.(๋งค๋ํ์คํธ ํ์ผ์์ ์ค์ ํ๋ ๊ฒ๊ณผ ๋์ผํด์ง๋ค)
val intent = Intent(this, SubActivity::class.java).apply {
flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP
}
์ด๋ฌ๋ฉด ๋งค๋ํ์คํธ ํ์ผ์์ ์ค์ ํ๋ launchMode์ ๋์ผํด์ง๋ค.
์ ๋ฆฌํ์๋ฉด ์ด flag๊ฐ ์ ์ฉ๋ ์กํฐ๋นํฐ๋ถํฐ, ์คํ top๊น์ง ๋ชจ๋ ๋ ๋ฆฌ๊ณ ์ด ์กํฐ๋นํฐ๋ฅผ ์คํ์ ์์์ ํญ์ top์ด ๋๋๋ก ๋ง๋ ๋ค.
์ด์ ํน์ดํ FLAGํ๋ ๋ง์ง๋ง์ผ๋ก ๋ณด๊ฒ ๋ค.
# FLAG_ACTIVITY_CLEAR_TASK
TASK๋ฅผ ์น ๋ ๋ฆฌ๋ ํ๋๊ทธ๋ค. NEW_TASK๋ ์กฐํฉํด์ ์ฌ์ฉํด์ผ๋๋ฉฐ ํญ์ ์ด์ ๋ฐฑ์คํ์ ๋ค ๋ ๋ฆฌ๊ณ ์ TASK๋ฅผ ์์ฑํ๊ฒ๋๋ค. ์ฆ ํญ์ ๋ฃจํธ ์กํฐ๋นํฐ๋ก ์คํ๋๋ค๋ ์๋ฏธ๊ฐ ๋๋ค.
https://developer.android.com/guide/components/activities/tasks-and-back-stack?hl=ko
https://developer.android.com/guide/components/intents-filters?hl=ko
๋์์ด ๋๋ค๋ฉด ๋๊ธ์ด๋ ๊ณต๊ฐ ๋ฒํผ ํ ๋ฒ์ฉ ๋๋ฅด๊ณ ๊ฐ์ฃผ์ธ์! ๋ก๊ทธ์ธ ์ํด๋ ๋ฉ๋๋ค ^_^