2024. 6. 20. 17:09ㆍ[Android] Kotlin 활용 앱 개발
# 액티비티 생명 주기의 개념
# 액티비티의 수명
- onCreate()와 onDestroy() 사이에 존재
- onCreate(): 액티비티가 생성되어 레이아웃 설정 등을 수행
- onDestroy(): 호출되는 시점에 사용하고 있는 리소스를 모두 해제하고 마감
# 액티비티 화면에서 눈에 보이게 되는 Visibility
- onStart()와 onStop() 사이에 존재
- 유저가 액티비티를 화면에서 보고 상호작용이 가능
- onStop()이 호출되어 새 액티비티가 시작되면 기존의 액티비티는 Stop
- 시스템은 액티비티의 전체 수명 내내 onStop()과 onStart()를 여러 번 호출 가능
- 이때 액티비티는 유저에게 보였다가 숨겨짐을 반복
# 액티비티가 foreground에서 동작하는 구간
- onResume()과 onPause() 사이에도 동작
- 액티비티가 화면에서 다른 모든 액티비티 앞에 표시됨
- 사용자 입력도 이곳에 집중
- 전경에 나타났다가 숨겨지는 전환 반복 가능
- ex) 기기가 절전모드에 들어가거나 대화 상자가 나타나면 onPause()가 호출
# 수명주기 콜백 메소드
- 라이프 사이클 콜백 메소드: 액티비티가 생성되면서 해체될 때까지 액티비티의 상태에 따라서 불려지는 메소드
- 개발자는 필요한 경우에 해당 콜백 메소드를 재정의해 필요한 일을 수행 가능
- 주요 콜백 메소드
1) onCreate()
- 반드시 구현해야 하는 메소드로, 액티비티가 생성되며 호툴
- 화면을 setContentView()를 호출해 설정해야
2) onPause()
- 사용자가 액티비티를 떠나고 있을 때 호출됨
- 액티비티가 완전히 소멸되진 않지만 사용자가 돌아오지 않을 수 있기 때문에 그간의 변경사항을 저장함
# 액티비티 전환 시 콜백 메소드 호출 순서
<FirstActivity에서 SecondActivity 시작>
1) FirstActivity의 onPause()
2) SecondActivity의 onCreate() => onStart() => onResume()
3) FirstActivity의 onStop()
<단말기의 뒤로가기 버튼 누름>
1) SecondActivity의 onPause()
2) FirstActivity의 onRestart() => onStart() => onResume()
3) SecondActivity의 onStop(), onDestroy()
예시
class FirstActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_first)
Log.i(TAG, “onCreate()")
//생략..
}
val TAG = "FirstActivity_Lifrcycle"
override fun onStart() {
super.onStart()
Log.i(TAG, "onStart()")
}
override fun onResume() {
super.onResume()
Log.i(TAG, "onResume()")
}
override fun onPause() {
super.onPause()
Log.i(TAG, "onPause()")
}
override fun onStop() {
super.onStop()
Log.i(TAG, "onStop()")
}
override fun onRestart() {
super.onRestart()
Log.i(TAG, "onRestart()")
}
override fun onDestroy() {
super.onDestroy()
Log.i(TAG, "onDestroy()")
}
}
class SecondActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
Log.i(TAG, "onCreate()")
// 생략..
}
val TAG = "SecondActivity_Lifrcycle"
override fun onStart() {
super.onStart()
Log.i(TAG, "onStart()")
}
override fun onResume() {
super.onResume()
Log.i(TAG, "onResume()")
}
override fun onPause() {
super.onPause()
Log.i(TAG, "onPause()")
}
override fun onStop() {
super.onStop()
Log.i(TAG, "onStop()")
}
override fun onRestart() {
super.onRestart()
Log.i(TAG, "onRestart()")
}
override fun onDestroy() {
super.onDestroy()
Log.i(TAG, "onDestroy()")
}
}
'[Android] Kotlin 활용 앱 개발' 카테고리의 다른 글
[챌린지반] MVVM (0) | 2024.07.16 |
---|---|
뷰 바인딩(View Binding) (0) | 2024.07.09 |
Android - 인텐트(Intent) (0) | 2024.06.20 |
Android - 액티비티(Activity) (0) | 2024.06.20 |
Android - Layout (0) | 2024.06.19 |