κ°μ
- νλ‘μΈμ€μ μλͺ κ΄λ¦¬ λ°©μμ λν΄ μ΄ν΄νλ€.
- νλ‘μΈμ€ μ€μλ κ³μΈ΅ ꡬ쑰μ λν΄ μ΄ν΄νλ€.
- μμ€ν μ νλ‘μΈμ€ μ€μλ μ λ³ λ°©μμ λν΄ μ΄ν΄νλ€.
μ ν리μΌμ΄μ νλ‘μΈμ€
λλΆλΆμ κ²½μ° λͺ¨λ Android μ ν리μΌμ΄μ μ μ체 Linux νλ‘μΈμ€μμ μ€νλλ©°, μμ€ν μ΄ λ©λͺ¨λ¦¬λ₯Ό νμν΄μΌ ν λκΉμ§ κ³μ μ€νλ©λλ€. Androidμ νλ‘μΈμ€μ μλͺ μ£ΌκΈ°λ μ ν리μΌμ΄μ μμ κ΄λ¦¬λλ κ²μ΄ μλλΌ, μ ν리μΌμ΄μ μ΄ κ°μ§κ³ μλ μμλ€μ μ€μμ±κ³Ό μμ€ν μ΄ μ¬μ©ν μ μλ μμ¬ λ©λͺ¨λ¦¬ μμ μ‘°ν©νμ¬ μμ€ν μ μν΄ κ²°μ λ©λλ€.
λ°λΌμ μλλ‘μ΄λ κ°λ°μλ λ€μν μ ν리μΌμ΄μ μ»΄ν¬λνΈ(Activity, Service, BroadcastReceiver)κ° μ ν리μΌμ΄μ νλ‘μΈμ€μ μ€μλμ μν₯μ λ―ΈμΉλ λ°©μμ μ΄ν΄ν΄μΌ ν©λλ€. λ§μ½ μ»΄ν¬λνΈλ€μ μ¬λ°λ₯΄κ² μ¬μ©νμ§ μμΌλ©΄ μ ν리μΌμ΄μ νλ‘μΈμ€κ° μ’ λ£λ μ μμ΅λλ€.
μ€μλ κ³μΈ΅ ꡬ쑰
λ©λͺ¨λ¦¬κ° λΆμ‘±ν λ μ’ λ£ν΄μΌ νλ νλ‘μΈμ€λ₯Ό κ²°μ νκΈ° μν΄ Androidλ μ€μλμ λ°λΌ νλ‘μΈμ€λ€μ μ νλ³λ‘ κ³μΈ΅ ꡬ쑰μ λ°°μΉν©λλ€. μ΄ λ€κ°μ§ νλ‘μΈμ€ μ νμ΄ μ‘΄μ¬ν©λλ€. (μ€μλ μμλ‘ μμ±)
1. ν¬κ·ΈλΌμ΄λ νλ‘μΈμ€
μ¬μ©μκ° νμ¬ νκ³ μλ μμ μ νμμ μΌλ‘ νμν νλ‘μΈμ€μ λλ€. λ€μν μ»΄ν¬λνΈλ€λ‘ μΈν΄μ ν¬κ·ΈλΌμ΄λλ‘ κ°μ£Όλλ©°, λ€μ 쑰건 μ€ νλλΌλ ν΄λΉνλ©΄ ν¬κ·ΈλΌμ΄λ νλ‘μΈμ€λ‘ κ°μ£Όλ©λλ€.
- νλ‘μΈμ€κ° μ¬μ©μμ μνΈμμ©νκ³ μλ Activityλ₯Ό μ€ν μ€μΈ κ²½μ°
- νλ‘μΈμ€μ νμ¬ μ€ν μ€μΈ BroadcastReceiverκ° μλ κ²½μ°
- νλ‘μΈμ€μ μ½λ°± λ©μλ(onCreate(), onStart(), onDestory()) μ€μμ νμ¬ μ½λλ₯Ό μ€ν μ€μΈ Serviceκ° μλ κ²½μ°
ν¬κ·ΈλΌμ΄λ νλ‘μΈμ€λ λ©λͺ¨λ¦¬κ° λ§€μ° λΆμ‘±νμ¬ ν¬κ·ΈλΌμ΄λ νλ‘μΈμ€μ‘°μ°¨ κ³μ μ€νν μ μμ κ²½μ°μλ§ μ’ λ£ν©λλ€.
2. κ°μμ νλ‘μΈμ€
μ¬μ©μκ° νμ¬ μκ³ μλ μμ μ μνμ€μΈ νλ‘μΈμ€μ΄λ©°, μ’ λ£λλ©΄ μ¬μ©μμκ² λΆμ μ μΈ μν₯μ λ―ΈμΉ©λλ€. λ€μ 쑰건μ ν΄λΉλλ νλ‘μΈμ€λ₯Ό κ°μμ νλ‘μΈμ€λ‘ κ°μ£Όν©λλ€.
- νλ‘μΈμ€κ° νλ©΄μμΌλ‘λ νμλμ§λ§, ν¬κ·ΈλΌμ΄λμ μμ§ μμ Activity(onPause() νΈμΆ)λ₯Ό μ€ν μ€μΈ κ²½μ°. μλ₯Ό λ€μ΄ λν μμ λ€λ‘ μ‘ν°λΉν°κ° νλ¦Ώνκ² λ³΄μ΄λ κ²½μ°λ₯Ό λ§ν©λλ€.
- νλ‘μΈμ€μ startForeground()λ₯Ό ν΅ν΄ ν¬κ·ΈλΌμ΄λ μλΉμ€λ‘ μ€ν μ€μΈ Serviceκ° μλ κ²½μ°
- νλ‘μΈμ€μ μ¬μ©μκ° μκ³ μλ νΉμ κΈ°λ₯μ μ¬μ©νλ μλΉμ€κ° μλ κ²½μ°
κ°μμ νλ‘μΈμ€λ ν¬κ·ΈλΌμ΄λ νλ‘μΈμ€λ³΄λ€λ λ μ νμ μ΄μ§λ§, λ§€μ° μ€μν κ²μΌλ‘ κ°μ£Όλλ©° ν¬κ·ΈλΌμ΄λ νλ‘μΈμ€μ μ€ν μνλ₯Ό μ μ§νλ λ° νμν μν©μ΄ μλλΌλ©΄ μ’ λ£λμ§ μμ΅λλ€.
3. μλΉμ€ νλ‘μΈμ€
startService() λ©μλλ‘ μμλ Serviceλ₯Ό μ μ§νλ νλ‘μΈμ€μ λλ€. μ΄λ¬ν νλ‘μΈμ€λ μ¬μ©μμκ² μ§μ νμλμ§ μμ§λ§, μ¬μ©μκ° ν¬μ»€μ€λ₯Ό κ°κ³ μλ μμ (λ°± κ·ΈλΌμ΄λ μμ )μ μ€νν©λλ€. λ°λΌμ ν¬κ·ΈλΌμ΄λ νλ‘μΈμ€ λ° κ°μμ νλ‘μΈμ€λ₯Ό μ μ§ν λ©λͺ¨λ¦¬κ° λΆμ‘±νμ§ μλ€λ©΄ νμ μ€ν μνλ₯Ό μ μ§ν©λλ€.
λ§μ½, μ€λ«λμ μ€νλκ³ μλ μλΉμ€λ μ€μλκ° κ°λ±λλ©°, μΊμλ νλ‘μΈμ€ λͺ©λ‘μΌλ‘ μ΄μ λ μ μμ΅λλ€. μ΄λ κ² νλ©΄ μΈλ° μλ λ©λͺ¨λ¦¬ λμ λλ μ₯κΈ° μ€ν μλΉμ€κ° λ©λͺ¨λ¦¬λ₯Ό λλΉνλ μν©μ λ°©μ§ν μ μμ΅λλ€.
4. μΊμλ νλ‘μΈμ€
λΉμ₯ νμνμ§ μμ νλ‘μΈμ€μ λλ€. μμ€ν μ λ€λ₯Έ κ³³μ λ©λͺ¨λ¦¬κ° νμνλ€λ©΄ μΈμ λ μ§ μ΄ νλ‘μΈμ€λ€μ μ’ λ£ν μ μμ΅λλ€. μΊμλ νλ‘μΈμ€λ λ©λͺ¨λ¦¬ κ΄λ¦¬μ μ μΌνκ² κ΄λ ¨λ νλ‘μΈμ€μ΄λ©°, νμμ λ°λΌ κ°μ₯ μ€λλ νλ‘μΈμ€λ₯Ό μ κΈ°μ μΌλ‘ μ’ λ£μν΅λλ€.
νν μΊμλ νλ‘μΈμ€λ νμ¬ μ¬μ©μμκ² νμλμ§ μλ νλ μ΄μμ Activity μΈμ€ν΄μ€λ₯Ό ν¬ν¨ν©λλ€.(onStop() λ©μλκ° νΈμΆλ) μΊμλ νλ‘μΈμ€κ° μ¬λ°λ₯Έ μ‘ν°λΉν° μλͺ μ£ΌκΈ°λ₯Ό κ°μ§κ³ μλ€λ©΄, μμ€ν μ΄ νλ‘μΈμ€λ₯Ό μ’ λ£νλλΌλ μ¬μ©μμκ² μν₯μ μ£Όμ§ μμ΅λλ€. κ·Έλ¦¬κ³ μ°κ²°λ μ‘ν°λΉν°κ° μ νλ‘μΈμ€μμ λ€μ μμ±λλλΌλ μμ€ν μ΄ μ΄μ μ UI λ΄μ©μ 볡μν μ μμ΅λλ€.
μΊμλ νλ‘μΈμ€λ€μ LRU μ€μΌμ€λ§ λ°©μμΌλ‘ μ μ§λλ©°, λ©λͺ¨λ¦¬ νμ μ λͺ©λ‘μ λ§μ§λ§ νλ‘μΈμ€(κ°μ₯ μ€λ«λμ μ¬μ©λμ§ μμ)κ° κ°μ₯ λ¨Όμ μ’ λ£λ©λλ€.
νλ‘μΈμ€ λΆλ₯ λ°©λ²μ κ²°μ ν λ μμ€ν μ νλ‘μΈμ€κ° κ°μ§κ³ μλ λͺ¨λ μ»΄ν¬λνΈμ€ κ°μ₯ λμ μ€μλμ λ°λΌ κ²°μ μ λ΄λ¦½λλ€. λ°λΌμ μμμ μΈκΈν κ² μ²λΌ κ°λ°μλ κ° μ»΄ν¬λνΈκ° νλ‘μΈμ€μ μ€μλμ μ΄λ»κ² κΈ°μ¬νλμ§ μμΈν νμ ν΄μΌλ§ ν©λλ€.
Reference
https://developer.android.com/guide/components/activities/process-lifecycle?hl=ko
νλ‘μΈμ€ λ° μ ν리μΌμ΄μ μλͺ μ£ΌκΈ° | Android κ°λ°μ | Android Developers
λλΆλΆμ κ²½μ° λͺ¨λ Android μ ν리μΌμ΄μ μ μ체 Linux νλ‘μΈμ€μμ μ€νλ©λλ€. μ΄ νλ‘μΈμ€λ μΌλΆ μ½λλ₯Ό μ€νν΄μΌ ν λ μ ν리μΌμ΄μ μ©μΌλ‘ μμ±λλ©° λ μ΄μ νμνμ§ μκ³ μμ€ν μ΄ λ©λͺ¨λ¦¬λ₯Ό νμν΄μΌ ν λκΉμ§ κ³μ μ€νλ©λλ€…
developer.android.com