κ°μ
- Taskμ λν΄ μ΄ν΄νλ€.
- Taskμ μ‘ν°λΉν°μμ κ΄κ³μ λν΄ μ΄ν΄νλ€.
- λ°± μ€νμ λμμ λν΄ μ΄ν΄νλ€.
Task, Activity, λ°± μ€ν
Taskλ μ¬μ©μκ° νΉμ μμ μ ν λ μνΈμμ©νλ Activityμ μ§ν©μ λλ€. νλμ Taskμλ μ‘ν°λΉν° μ§ν©μ μ΄λ¦° μμλλ‘ μ λ ¬ν΄λλ λ°± μ€νμ΄ μ‘΄μ¬ν©λλ€. λ°± μ€νμ Stackμ μ±μ§μ κ°μ§κ³ μμΌλ©° κ°μ₯ μ΅μ μ μ΄λ¦° μ‘ν°λΉν°κ° κ°μ₯ 맨μλ‘ μμΉνκ² λ©λλ€. μλ₯Ό λ€μ΄μ μ΄λ©μΌ μ±μλ μ λ©μμ§ λͺ©λ‘μ νμνλ μ‘ν°λΉν°κ° μ‘΄μ¬νκ³ , μ¬μ©μκ° λ©μμ§ λͺ©λ‘μμ λ©μμ§λ₯Ό νλ ν΄λ¦νλ©΄ λ©μμ§μ λ΄μ©μ μμΈνκ² λ³Ό μ μλλ‘ μλ‘μ΄ μ‘ν°λΉν°κ° μ΄λ¦¬κ² λ©λλ€. μ΄λ λ©μμ§ μμΈλ³΄κΈ° μ‘ν°λΉν°λ λ°± μ€νμ μΆκ°λλ©°, λ§μ½μ μ¬μ©μκ° λ€λ‘κ°κΈ° λ²νΌμ ννλ©΄ λ©μμ§ μμΈλ³΄κΈ° μ‘ν°λΉν°λ λ°± μ€νμμ popλ©λλ€.
λ°± μ€νμ κΈ°λ³Έ νλ¦
κΈ°κΈ°μ ν νλ©΄μ λλΆλΆμ Taskλ€μ΄ μμλλ μμΉμ λλ€. μ¬μ©μκ° μ± λ°μ²μ μμ΄μ½μ ννλ©΄ ν΄λΉ μ±μ Taskκ° ν¬κ·ΈλΌμ΄λλ‘ λμ€κ² λ©λλ€. λ§μ½, λ°±κ·ΈλΌμ΄λμ ν΄λΉ μ±μ Taskκ° μ‘΄μ¬νμ§ μλλ€λ©΄ μλ‘μ΄ Taskκ° μμ±λκ³ μ΄ μ±μ MainActivityκ° λ°± μ€νμ λ£¨νΈ μ‘ν°λΉν°λ‘ μ΄λ¦¬κ² λ©λλ€.
νμ¬ μ‘ν°λΉν°κ° λ λ€λ₯Έ μ‘ν°λΉν°λ₯Ό μμνλ©΄ μ μ‘ν°λΉν°κ° λ°± μ€ν 맨 μμ νΈμλκ³ ν¬μ»€μ€λ₯Ό κ°κ² λ©λλ€. μ΄μ μ‘ν°λΉν°λ μ€νμ λ¨μμμ§λ§ μ€μ§λ¨ μνλ₯Ό κ°κ² λ©λλ€. μ‘ν°λΉν°κ° μ€μ§λλ©΄ μμ€ν μ UIμ μνλ₯Ό 보쑴ν©λλ€. λ§μ½ μ¬μ©μκ° λ€λ‘κ°κΈ° λ²νΌμ λλ₯΄λ©΄ νμ¬ μ‘ν°λΉν°κ° popλκ³ , μ΄μ μ‘ν°λΉν°κ° UIμ μνλ₯Ό μ μ§νμ±λ‘ μμλ©λλ€. μ€νμ μ‘ν°λΉν°λ μ λλ‘ λ€μ μ λ ¬λμ§ μμΌλ©°, μ΄λ¬ν μ±μ§μ κ³μ μ μ§νκ² λ©λλ€.
μ¬μ©μκ° κ³μ λ€λ‘ λ²νΌμ λλ₯΄λ©΄ κ³μ μ΄μ μ‘ν°λΉν°κ° λνλλ©°, λ§μ½ λͺ¨λ μ‘ν°λΉν°κ° μ€νμμ μμ λλ©΄ Taskλ λ μ΄μ μ‘΄μ¬νμ§ μκ² λ©λλ€. μ¬μ©μκ° μ Taskλ₯Ό μμνκ±°λ ν λ²νΌμ ν΅ν΄ ν νλ©΄μΌλ‘ μ΄λν λ νμ¬ Taskλ ν΅μ§Έλ‘ λ°±κ·ΈλΌμ΄λλ‘ μ΄λν©λλ€. Taskμ λͺ¨λ μ‘ν°λΉν°λ λ°±κ·ΈλΌμ΄λμ μλ λμ λͺ¨λ μ€μ§λμ§λ§, Taskμ λ°± μ€νμ κ·Έλλ‘ μ μ§λ©λλ€. μ΄νμ Taskκ° λ€μ ν¬κ·ΈλΌμ΄λλ‘ λμκ°κ² λλ©΄ λ°± μ€νμ΄ μ μ§ λμ΄μκΈ°μ μ¬μ©μλ μ€νμ κ°μ₯ μλ¨μ μλ μ‘ν°λΉν°λ₯Ό κ·Έλλ‘ μ΄μ΄λκ° μ μμ΅λλ€.
μ°Έκ³ )
μ¬λ¬ Taskλ₯Ό λμμ λ°±κ·ΈλΌμ΄λμ μ μ§ν μ μμ§λ§, μμ€ν μ΄ λ©λͺ¨λ¦¬λ₯Ό ν보νκΈ° μν΄ κ°μ λ‘ μ‘ν°λΉν°μ μ κ±°λ₯Ό μμν μ μμΌλ©°, μ΄λ‘ μΈν΄μ μ‘ν°λΉν° μνκ° μμ€λ μ μμ΅λλ€.
λ°±μ€νμ λμ κ΄λ¦¬
κ°λμ λ°±μ€νμ μ μμ μΈ λμμ λ³κ²½μμΌμΌν μλ μμ΅λλ€. μλ₯Ό λ€μ΄ μ±μ μ‘ν°λΉν°κ° μμλ λ νμ¬ Task λ΄μ λ°°μΉλμ§ μκ³ μ Taskκ° μμλλλ‘ ν μ μμΌλ©° λλ μ‘ν°λΉν°κ° μμλ λ λ°± μ€νμ 맨 μμ μ μΈμ€ν΄μ€κ° μμ±λλ λμ ν΄λΉ μ‘ν°λΉν°μ κΈ°μ‘΄ μΈμ€ν΄μ€κ° μμΌλ‘ λμ€λλ‘ ν μ μμ΅λλ€. λλ μ¬μ©μκ° Taskλ₯Ό λ λ λ λ£¨νΈ μ‘ν°λΉν°λ₯Ό μ μΈν λͺ¨λ μ‘ν°λΉν°κ° λ°± μ€νμμ μ κ±°λλλ‘ ν μ μμ΅λλ€.
λ°±μ€νμ λμμ μ μνκΈ° μν΄μλ λκ°μ§ λ°©λ²μΌλ‘ μ μν μ μμ΅λλ€.
manifest νμΌ μ¬μ©
manifest νμΌμμ μ‘ν°λΉν°λ₯Ό μ μΈν λ <activity> μμμ launchMode μμ±μ μ¬μ©νμ¬ μ‘ν°λΉν°κ° Taskμ μ΄λ»κ² μ°κ²°λλμ§μ λν΄ μ§μ ν μ μμ΅λλ€.
- "standard"
κΈ°λ³Έκ°μ λλ€. μμ€ν μ μ‘ν°λΉν°κ° μμλ Taskμ μ‘ν°λΉν°μ μ μΈμ€ν΄μ€λ₯Ό μμ±νκ³ μΈν νΈλ₯Ό ν΄λΉ μΈμ€ν΄μ€λ‘ λΌμ°ν ν©λλ€. μ‘ν°λΉν°λ μ¬λ¬ λ² μΈμ€ν΄μ€νλ μ μμ΅λλ€.
- "singleTop"
μ‘ν°λΉν°μ μΈμ€ν΄μ€κ° νμ¬ Taskμ λ°± μ€ν 맨 μμ μμΌλ©΄ μμ€ν μ μ‘ν°λΉν°μ μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μκ³ μΈν νΈλ₯Ό κΈ°μ‘΄ μΈμ€ν΄μ€(맨 μμ μλ)λ‘ λΌμ°ν ν©λλ€. μ‘ν°λΉν°λ μ¬λ¬ λ² μΈμ€ν΄μ€νλ μ μκ³ , μ¬λ¬ Taskλ ν Taskμ μ¬λ¬ μΈμ€ν΄μ€κ° μ‘΄μ¬ν μ μμ§λ§ λ§μ½ λ°± μ€ν 맨 μμ λμΌν μ‘ν°λΉν°κ° μ‘΄μ¬νλ€λ©΄ μ μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μμ΅λλ€.
- "singleTask"
μ‘ν°λΉν°μ μΈμ€ν΄μ€κ° μ΄λ―Έ λ³λμ Taskμ μλ€λ©΄ μμ€ν μ μ μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μκ³ κΈ°μ‘΄ μΈμ€ν΄μ€λ‘ λΌμ°ν ν©λλ€. μ¦, μ‘ν°λΉν°μ μΈμ€ν΄μ€κ° ν λ²μ νλλ§ μ‘΄μ¬ν μ μμ΅λλ€.
- "singleInstance"
Taskλ 무쑰건 λ¨ νλμ μ‘ν°λΉν°λ§ κ°μ§κ³ μκ² λ©λλ€. μ¦, μ΄ μ‘ν°λΉν°λ‘ μμλ λͺ¨λ μ‘ν°λΉν°λ λ³λμ Taskλ‘ μ΄λ¦¬κ² λ©λλ€.
μ‘ν°λΉν°κ° μ Taskμμ μμλμλ λλ μ‘ν°λΉν°κ° μμλ Taskμ λμΌν Taskμμ μμλμλ κ΄κ³μμ΄ μ¬μ©μλ λ€λ‘κ°κΈ° λ²νΌμ ν΅ν΄ νμ μ΄μ μ‘ν°λΉν°λ‘ λμκ° μ μμ΅λλ€. κ·Έλ¬λ singleTask μ€ν λͺ¨λλ₯Ό μ§μ ν μ‘ν°λΉν°λ₯Ό μμνλλ° κ·Έλ μ‘ν°λΉν°μ μΈμ€ν΄μ€κ° λ°±κ·ΈλΌμ΄λ Taskμ μ‘΄μ¬νλ€λ©΄ ν΄λΉ Task μ μ²΄κ° ν¬κ·ΈλΌμ΄λλ‘ μ΄λνκ² λ©λλ€.
μΈν νΈ νλκ·Έ μ¬μ©
μ‘ν°λΉν°λ₯Ό μμν λ startActivity()μ μ λ¬νλ μΈν νΈμ νλκ·Έλ₯Ό ν¬ν¨ν¨μΌλ‘μ¨ μ‘ν°λΉν°μ Taskμ μ΄λ»κ² μ°κ²°λ μ§ μ§μ ν΄μ€ μ μμ΅λλ€. μ¬μ©ν μ μλ νλκ·Έλ λ€μκ³Ό κ°μ΅λλ€.
- "FLAG_ACTIVITY_NEW_TASK"
μ‘ν°λΉν°λ₯Ό μ Taskμμ μμν©λλ€. μ§κΈ μμνκ³ μλ μ‘ν°λΉν°μ λν΄ μ΄λ―Έ μ€ν μ€μΈ Taskκ° μ‘΄μ¬νλ€λ©΄ κ·Έ Taskμ λ§μ§λ§ μνκ° λ³΅μλμ΄ ν¬κ·ΈλΌμ΄λλ‘ μ΄λνκ³ μ‘ν°λΉν°λ μ μΈν νΈλ₯Ό μμ ν©λλ€. μ¦, "singleTask"μ λμΌν λμμ΄ λ°μν©λλ€.
- "FLAG_ACTIVITY_SINGLE_TOP"
μμ μ€μΈ μ‘ν°λΉν°κ° λ°± μ€νμ 맨 μμ μλ μ‘ν°λΉν°λ©΄ μ μΈμ€ν΄μ€κ° μμ±λλ λμ κΈ°μ‘΄ μΈμ€ν΄μ€κ° μΈν νΈλ₯Ό μμ ν©λλ€. μ¦, "singleTop"κ³Ό λμΌν λμμ΄ λ°μν©λλ€.
- "FLAG_ACTIVITY_CLEAR_TOP"
μμ μ€μΈ μ‘ν°λΉν°κ° νμ¬ Taskμμ μ΄λ―Έ μ€ν μ€μ΄λ©΄ μ‘ν°λΉν°μ μ μΈμ€ν΄μ€κ° μ€νλλ λμ Taskμ 맨 μμ μλ λ€λ₯Έ λͺ¨λ μ‘ν°λΉν°κ° μ κ±°λκ³ μ΄λ―Έ μ€ν μ€μ΄λ μ‘ν°λΉν°κ° 맨 μλ‘ μμΉνκ² λλ©°, μΈν νΈλ₯Ό μμ νκ² λ©λλ€.
Affinity
μ΄νΌλν°λ μ‘ν°λΉν°κ° μ΄λ ν μμ μ μμλκΈ°λ₯Ό μ νΈνλμ§λ₯Ό λνλ λλ€. κΈ°λ³Έμ μΌλ‘ λμΌν μ±μ λͺ¨λ μ‘ν°λΉν°λ€μ λμΌν μ΄νΌλν°λ₯Ό κ°μ§κ³ μμ΅λλ€. λ°λΌμ λμΌν μ±μ λͺ¨λ μ‘ν°λΉν°λ€μ κΈ°λ³Έμ μΌλ‘ λμΌν Taskμμ μνκ² λ©λλ€. κ°λ°μλ μ΄λ¬ν μ‘ν°λΉν°μ μ΄νΌλν°λ₯Ό μμ ν μ μμ΅λλ€. μλ‘ λ€λ₯Έ μ±μ μ μλ μ‘ν°λΉν°λ€μ΄ λμΌν μ΄νΌλν°λ₯Ό κ°μ§ μ μμΌλ©°, λλ λμΌν μ±μ μ μλ μ‘ν°λΉν°μ λν΄ λ€μν μ΄νΌλν°λ₯Ό λΆμ¬ν μ μμ΅λλ€.
μ΄λ€ μ‘ν°λΉν°λ <activity> μμμ taskAffinity μμ±μ ν΅ν΄ μ΄νΌλν°λ₯Ό μμ ν μ μμ΅λλ€. ν΄λΉ μμ±μ λ¬Έμμ΄ κ°μ μ¬μ©νλ©° μ΄ κ°μ κ³ μ ν΄μΌλ§ ν©λλ€. μμ€ν μ΄ μ΄ μ΄λ¦μ μ΄μ©νμ¬ μ΄νΌλν°λ€μ μλ³νκΈ° λλ¬Έμ λλ€. μ΄νΌλν°λ λ€μκ³Ό κ°μ λ κ°μ§ μν©μμ μμ©ν©λλ€.
- "μ‘ν°λΉν°λ₯Ό μ€νν μΈν νΈμ FLAG_ACTIVITY_NEW_TASK νλκ·Έκ° ν¬ν¨λμ΄ μμ κ²½μ°"
λ§μ½ FLAG_ACTIVITY_NEW_TASKκ° ν¬ν¨λμ΄ μλ€λ©΄, μμ€ν μ μ μ‘ν°λΉν°λ₯Ό μμ©ν λ€λ₯Έ Taskλ₯Ό μ°Ύκ²λ©λλ€. νμ§λ§ λ°λμ μ TaskμΌ νμλ μμ΅λλ€. μ μ‘ν°λΉν°μ λμΌν μ΄νΌλν°λ₯Ό κ°μ§ κΈ°μ‘΄ Taskκ° μ΄λ―Έ μμΌλ©΄ μ‘ν°λΉν°λ κ·Έ Taskλ‘ λ€μ΄κ°κ² λ©λλ€. λ§μ½ μ΄νΌλν°κ° μ‘΄μ¬νμ§ μλλ€λ©΄ μ Taskλ₯Ό μμν©λλ€.
- "μ‘ν°λΉν°μ allowTaskReparenting μμ±μ΄ trueλ‘ μ€μ λμ΄ μμ λ "
allowTaskReparenting μμ±μ μ‘ν°λΉν°κ° μμ μ΄ μμλλ Taskμμ λ²μ΄λ λμΌν μ΄νΌλν°λ₯Ό κ°μ§ λ€λ₯Έ Taskκ° ν¬κ·ΈλΌμ΄λλ‘ λμ€λ©΄ κ·Έ μμ μΌλ‘ μ΄λν μ μλμ§μ λν μμ±μΈλ°, λ§μ½ trueμΌ κ²½μ° μ΄λ κ°λ₯νλ€λ μλ―Έμ λλ€.
Reference
https://developer.android.com/guide/components/activities/tasks-and-back-stack?hl=ko
μμ λ° λ°± μ€ν μ΄ν΄ | Android κ°λ°μ | Android Developers
μΌλ°μ μΌλ‘ μ±μλ μ¬λ¬ νλμ΄ ν¬ν¨λ©λλ€. κ° νλμ μ¬μ©μκ° μ€νν μ μλ νΉμ μ’ λ₯μ μμ μ μ€μ¬μΌλ‘ μ€κ³λμ΄μΌ νλ©° λ€λ₯Έ νλμ μμν μ μμ΄μΌ ν©λλ€. μλ₯Ό λ€μ΄ μ΄λ©μΌ μ±μλ μ λ©μμ§ λͺ©λ‘μ νμνλ νλμ΄ νλ μμ μ μμ΅λλ€…
developer.android.com