[Android] Activity

πŸ’‘ μ•ˆλ“œλ‘œμ΄λ“œ 4λŒ€ μ»΄ν¬λ„ŒνŠΈ 쀑 ν•˜λ‚˜μΈ 앑티비티에 λŒ€ν•˜μ—¬ μƒμ„Έν•˜κ²Œ ν•™μŠ΅ν•˜μ˜€μŠ΅λ‹ˆλ‹€ !

 

Activity?

  • μ•‘ν‹°λΉ„ν‹°λŠ” μ•ˆλ“œλ‘œμ΄λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ‹΄λ‹Ήν•˜λŠ” ꡬ성 μš”μ†Œμž…λ‹ˆλ‹€.
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ ν•˜λ‚˜μ˜ 화면을 λ‚˜νƒ€λ‚΄λ©°, μ‚¬μš©μžκ°€ μƒν˜Έμž‘μš©ν•  수 μžˆλŠ” UIλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
  • μΌλ°˜μ μœΌλ‘œλŠ” 화면을 μ±„μš°λŠ” UI μ°½μ΄μ§€λ§Œ, ν•„μš”μ— λ”°λΌμ„œ λ‹€λ₯Έ μ°½ μœ„μ— μž‘κ²Œ λ„μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€.

μ•‘ν‹°λΉ„ν‹°μ˜ νŠΉμ§•

  • UI ν™”λ©΄
    • XML λ ˆμ΄μ•„μ›ƒ νŒŒμΌμ„ 톡해 UI μš”μ†Œλ“€μ„ μ •μ˜ν•˜κ³ , 이 μš”μ†Œλ“€μ„ μ½”λ“œμ—μ„œ μ œμ–΄ν•©λ‹ˆλ‹€.
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ§„μž…μ  (런쳐 μ•‘ν‹°λΉ„ν‹°)
    • μ‚¬μš©μžκ°€ 첫 번째둜 μ ‘ν•˜λŠ” μ•‘ν‹°λΉ„ν‹°λ₯Ό 톡해 μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό μƒν˜Έμž‘μš©μ„ μ§„ν–‰ν•˜λ©°, 이λ₯Ό 런쳐 앑티비티라고 ν•©λ‹ˆλ‹€.
    • AndroidManifest.xml νŒŒμΌμ—μ„œ intent-filter의 MAINκ³Ό LAUNCHER μ†μ„±μœΌλ‘œ 지정할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ•‘ν‹°λΉ„ν‹°μ˜ ꡬ성

// MainActivity.kt 
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}
  • μ•‘ν‹°λΉ„ν‹°λŠ” 일반적으둜 Kotlin(java) 클래슀 파일과 λ ˆμ΄μ•„μ›ƒ XML 파일둜 κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  • 일반적으둜 μ•‘ν‹°λΉ„ν‹°λ₯Ό μ‹œμž‘ν•˜λŠ” λ‘œμ§μ€ 클래슀 νŒŒμΌμ— μ •μ˜ν•©λ‹ˆλ‹€.
  • 이λ₯Ό ν†΅ν•΄μ„œ λ ˆμ•„μ΄μ›ƒ μ½”λ“œμ™€ λ™μž‘ 둜직 μ½”λ“œλ₯Ό λ”°λ‘œ μ •λ¦¬ν•˜μ—¬ 관심사λ₯Ό λΆ„λ¦¬ν•˜κ³ , μœ μ—°ν•˜κ²Œ μ•± UIλ₯Ό λΉŒλ“œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€λ₯Έ νŠΉμ§•μ€?

λ‹€λ₯Έ 앑티비티와 μƒν˜Έμž‘μš©

  • ν•˜λ‚˜μ˜ 앱을 μ—¬λŸ¬ 개의 μ•‘ν‹°λΉ„ν‹°λ₯Ό κ°€μ§ˆ 수 있으며, μ„œλ‘œ 간에 데이터λ₯Ό μ£Όκ³  받을 수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ‚¬μš©μžκ°€ λͺ©λ‘μ—μ„œ ν•­λͺ©μ„ μ„ νƒν•˜λ©΄ λ‹€λ₯Έ μ•‘ν‹°λΉ„ν‹°κ°€ μ‹œμž‘λ˜μ–΄ μ„ΈλΆ€ 정보λ₯Ό 보여쀄 수 있으며, 이λ₯Ό μœ„ν•΄ IntentλΌλŠ” 객체λ₯Ό ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ©€ν‹°νƒœμŠ€ν‚Ή 및 λ‚΄λΉ„κ²Œμ΄μ…˜ 지원

  • μ•ˆλ“œλ‘œμ΄λ“œ μ‹œμŠ€ν…œμ€ μ—¬λŸ¬ μ•‘ν‹°λΉ„ν‹°λ₯Ό λ°±κ·ΈλΌμš΄λ“œμ—μ„œ κ΄€λ¦¬ν•˜λ©°, μ‚¬μš©μžκ°€ μ•žλ’€λ‘œ 이동할 수 μžˆλ„λ‘ λ‚΄λΉ„κ²Œμ΄μ…˜ μŠ€νƒμ„ μ œκ³΅ν•©λ‹ˆλ‹€.
  • μ‚¬μš©μžκ°€ λ’€λ‘œ λ²„νŠΌμ„ λˆŒλ €μ„ λ•Œ 이전 μ•‘ν‹°λΉ„ν‹°κ°€ λ‹€μ‹œ ν™œμ„±ν™”λ©λ‹ˆλ‹€.

μ•‘ν‹°λΉ„ν‹° 생λͺ…μ£ΌκΈ°

  • μ•ˆλ“œλ‘œμ΄λ“œμ—μ„œλŠ” μ•‘ν‹°λΉ„ν‹°μ˜ μƒνƒœ 변화에 따라 μƒνƒœλ₯Ό νŠΈλž˜ν‚Ήν•  수 μžˆλŠ” ν•¨μˆ˜λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
  • μ•‘ν‹°λΉ„ν‹° 생λͺ…μ£ΌκΈ°λŠ” onCreate() → onStart() → onResume() → onPause() → onStop() → onDestory() 순으둜 μ‹€ν–‰λ©λ‹ˆλ‹€.
  • 상황에 λ”°λΌμ„œ onRestart() λ©”μ„œλ“œκ°€ 싀행될 수 있고, onStop(), onDestory()λŠ” μ‹€ν–‰λ˜μ§€ μ•Šμ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

onCreate()

  • μ•‘ν‹°λΉ„ν‹°κ°€ 생성될 λ•Œ 호좜되며 μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€ μ΄ˆκΈ°ν™”μ— μ‚¬μš©λ©λ‹ˆλ‹€.

onRestart()

  • μ•‘ν‹°λΉ„ν‹°κ°€ λ©ˆμ·„λ‹€κ°€ λ‹€μ‹œ μ‹œμž‘λ˜κΈ° λ°”λ‘œ 전에 ν˜ΈμΆœλ©λ‹ˆλ‹€.

onStart()

  • μ•‘ν‹°λΉ„ν‹°κ°€ μ‚¬μš©μžμ—κ²Œ 보여지기 λ°”λ‘œ 직전에 ν˜ΈμΆœλ©λ‹ˆλ‹€.

onResume()

  • μ•‘ν‹°λΉ„ν‹°κ°€ μ‚¬μš©μžμ™€ μƒν˜Έμž‘μš©ν•˜κΈ° λ°”λ‘œ 직전에 ν˜ΈμΆœλ©λ‹ˆλ‹€.

onPause()

  • λ‹€λ₯Έ μ•‘ν‹°λΉ„ν‹°κ°€ λ³΄μ—¬μ§ˆ λ•Œ 호좜되며, 데이터 μ €μž₯κ³Ό μŠ€λ ˆλ“œ 쀑지 λ“±μ˜ 처리λ₯Ό ν•  λ•Œ 주둜 μ‚¬μš©ν•©λ‹ˆλ‹€.

onStop()

  • μ•‘ν‹°λΉ„ν‹°κ°€ 더 이상 μ‚¬μš©μžμ—κ²Œ 보여지지 μ•Šμ„ λ•Œ ν˜ΈμΆœλ©λ‹ˆλ‹€.
  • λ©”λͺ¨λ¦¬κ°€ λΆ€μ‘±ν•  경우 onStop() λ©”μ„œλ“œκ°€ ν˜ΈμΆœλ˜μ§€ μ•Šκ³  μ’…λ£Œλ  수 μžˆμŠ΅λ‹ˆλ‹€.

onDestory()

  • μ•‘ν‹°λΉ„ν‹°κ°€ μ†Œλ©Έλ  λ•Œ 호좜되며, μ•„λž˜μ™€ 같은 μƒν™©μ—μ„œλ„ ν˜ΈμΆœλ©λ‹ˆλ‹€.
    • finish() λ©”μ„œλ“œ μ‚¬μš©
    • μ‹œμŠ€ν…œμ΄ λ©”λͺ¨λ¦¬ 확보λ₯Ό μœ„ν•΄ μ•‘ν‹°λΉ„ν‹°λ₯Ό 제거

생λͺ…μ£ΌκΈ°κ°€ ν•„μš”ν•œ 이유?

  • μ‚¬μš©μžκ°€ 이용 쀑인 앱을 λ°±κ·ΈλΌμš΄λ“œλ‘œ μ „ν™˜ν–ˆλ‹€κ°€ λ‹€μ‹œ μž¬κ°œν•  경우 μ•±μ˜ 데이터λ₯Ό μ΄ˆκΈ°ν™” ν•˜λŠ” 상황이 λ°œμƒν•©λ‹ˆλ‹€.
  • μœ„μ™€ 같은 경우 생λͺ…주기에 따라 문제λ₯Ό λŒ€μ²΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ‹œμŠ€ν…œμ—μ„œ μ œκ³΅ν•˜λŠ” 라이프 사이클에 λ”°λΌμ„œ μ‰½κ²Œ κ΅¬ν˜„μ΄ κ°€λŠ₯ν•΄μ§‘λ‹ˆλ‹€.

정리

  • μ•‘ν‹°λΉ„ν‹°λŠ” μ•ˆλ“œλ‘œμ΄λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ€‘μš”ν•œ ꡬ성 μš”μ†Œλ‘œ, ν™”λ©΄κ³Ό UIλ₯Ό κ΄€λ¦¬ν•˜κ³  μ‚¬μš©μžμ™€ μƒν˜Έμž‘μš©ν•©λ‹ˆλ‹€.
  • μ•‘ν‹°λΉ„ν‹°λŠ” 각자의 생λͺ…μ£ΌκΈ° λ™μ•ˆ νŠΉμ • μ΄λ²€νŠΈμ— λ°˜μ‘ν•˜μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μƒνƒœλ₯Ό μœ μ§€ν•˜κ³  κ΄€λ¦¬ν•˜λ©°, 이λ₯Ό 톡해 μ‚¬μš©μžκ°€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό 효율적으둜 μƒν˜Έμž‘μš©ν•  수 μžˆλ„λ‘ λ„μ™€μ€λ‹ˆλ‹€.

μ°Έκ³ 

https://velog.io/@tosspayments/Android-μ•±μ—μ„œ-결제-μ£Όλ¬Έμ„œ-λ§Œλ“œλŠ”-방법

https://lkitty0302.tistory.com/18