[안드로이드 스튜디오/코틀린] 액티비티의 생명주기(활동 수명 주기)
MainActivity.kt
package com.shinyelee.androidlifecycle
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.TextView
class MainActivity : AppCompatActivity() {
val TAG: String = "로그"
private lateinit var text_view: TextView
// Lifecycle of Activity(액티비티의 생명주기) //
// onCreate -> onStart -> onResume -> onPause -> onStop -> onRestart -> onDestroy
// 액티비티 또는 프래그먼트 "생성"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 뷰 내에 컨텐츠를 세팅함(res 폴더 내 layout 폴더 내 activity_main 파일)
setContentView(R.layout.activity_main)
Log.d(TAG, "MainActivity - onCreate() called")
}
// 액티비티 활동 "시작"
// 화면은 노출되나 유저와 상호작용 불가능
override fun onStart() {
super.onStart()
Log.d(TAG, "MainActivity - onStart() called")
}
// 중지된 액티비티 활동 "재개"
// 앱이 유저와 상호작용 가능
override fun onResume() {
// 상태바를 내리거나,
// 홈버튼을 누르거나,
// 전화가 오거나,
// 다른 활동(액티비티)으로 이동하거나,
// 기기 화면이 꺼지는 등
// 앱 실행을 방해하는 이벤트가 발생하면 onResume() -> onPause()
super.onResume()
Log.d(TAG, "MainActivity - onResume() called")
}
// 액티비티 활동 "일시중지"
// 구성요소가 포그라운드에 있지 않을 때 실행할 필요가 없는 기능을 모두 일시중지
override fun onPause() {
// 방해 이벤트가 발생하거나,
// 멀티 윈도우 모드에서 해당 앱이 포커스 상태가 아니거나,
// 새로운 반투명 활동(예: 대화상자)이 열릴 때 등
// 활동 재개하면 onPause() -> onResume()
super.onPause()
text_view = findViewById(R.id.text_view)
text_view.visibility = View.VISIBLE
text_view.setText("onPause()")
Log.d(TAG, "MainActivity - onPause() called")
}
// 액티비티 활동 "중단"
// 구성요소가 화면에 보이지 않을 때 실행할 필요가 없는 기능을 모두 정지
override fun onStop() {
// 이 때 애니메이션을 일시중지하거나,
// 세밀한 위치 업데이트에서 대략적인 위치 업데이트로 전환하는 등
// 필요하지 않은 리소스를 해제하거나 조정해야 함
super.onStop()
Log.d(TAG, "MainActivity - onStop() called")
}
// 액티비티 활동 "재시작"
override fun onRestart() {
// 대기 상태(onStop())로 뒀던 앱 다시 접속할 때 등
super.onRestart()
Log.d(TAG, "MainActivity - onRestart() called")
}
// 액티비티 활동 "소멸"
override fun onDestroy() {
// 앱을 onStop() 상태로 너무 오래 방치했거나
// 활동을 종료하거나
// 기기 회전 또는 멀티 윈도우 모드로 인해 시스템이 일시적으로 활동을 소멸시킬 때 등
// 활동이 소멸되기 전에 필요한 것을 정리할 수 있음(예: 뷰바인딩)
super.onDestroy()
Log.d(TAG, "MainActivity - onDestroy() called")
}
}
참고
반응형
'개발(Android) > android studio' 카테고리의 다른 글
[Android Studio/Kotlin] Listener, Method, Click Event (0) | 2022.04.18 |
---|---|
[Android Studio/Kotlin] Linear Layout, Relative Layout, Constraint Layout (0) | 2022.04.17 |
[Android Studio/Kotlin] Gradient View (0) | 2022.04.16 |
[Android Studio/Kotlin] Live Templates Setting (0) | 2022.04.16 |
[Android Studio/GitHub] How to share a project on GitHub (0) | 2022.02.14 |