공식문서링크(the activity lifecycle)
오늘은 액티비티의 생명주기에 대해서 공부를 해보자
Activity가 생성될 때 호출된다. 이 메서드는 한 번만 호출되며, Activity의 초기 설정 및 리소스 초기화를 수행하는 데 사용된다. setContentView()를 통해 레이아웃을 화면에 연결하고 초기화 코드를 실행하며 반드시 구현되어야 한다.
onCreate() 이후 호출되며, Activity가 시작되었음을 나타낸다.
Activity가 화면에 표시되고 사용자와 상호작용 가능한 상태로 들어갈 때 호출되며 포커스를 받는다.
Activity가 활성 상태로 사용자와 상호작용하며 동작한다.
다른 Activity가 화면을 부분적으로 덮거나 포커스를 잃을 때 호출된다. (예를 들어 다른 Activity로 이동하거나 전화가 오는 경우)
Activity가 화면에서 완전히 가려지거나 다른 Activity로 전환되어 화면에 보이지 않을 때 호출된다. 이 단계에서는 화면 공간을 더 이상 차지하지 않는다.
Activity가 완전히 종료되고 메모리에서 제거될 때 호출된다. 이 Activity와 관련된 리소스 정리 및 정리 작업이 주로 이루어진다.
이 흐름은 Activity의 일반적인 라이프사이클이다. Activity 상태 간 전환은 여러 이벤트에 의해 트리거될 수 있으며, 이러한 라이프사이클 메서드를 오버라이드하여 각 상태 변환에 대한 동작을 정의할 수 있다.
다음으로 간단한 예제를 만들어서 Activity에 lifecycle을 확인해보자
MainActivity.kt
package com.example.map
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.example.map.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private val binding by lazy { ActivityMainBinding.inflate(layoutInflater)}
// Activity가 생성될 때 호출
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
// 여기에서 초기화 및 설정 작업을 수행
Log.d(TAG, "onCreate 호출됨")
}
// Activity가 시작될 때 호출
override fun onStart() {
super.onStart()
// Activity가 사용자에게 보이기 시작
Log.d(TAG, "onStart 호출됨")
}
// Activity가 재개될 때 호출
override fun onResume() {
super.onResume()
// Activity가 사용자와 상호작용할 수 있도록 준비
Log.d(TAG, "onResume 호출됨")
}
// Activity가 일시 중지될 때 호출
override fun onPause() {
super.onPause()
// Activity가 부분적으로 가려지거나 포커스를 잃는다
Log.d(TAG, "onPause 호출됨")
}
// Activity가 중지될 때 호출
override fun onStop() {
super.onStop()
// Activity가 사용자에게 더 이상 보이지 않는다
Log.d(TAG, "onStop 호출됨")
}
// Activity가 파괴될 때 호출
override fun onDestroy() {
super.onDestroy()
// Activity가 종료되고 메모리에서 제거
Log.d(TAG, "onDestroy 호출됨")
}
companion object {
private const val TAG = "ActivityLifeCycle"
}
}
아 onStop 때 화면이 완전히 다른 화면으로 넘어가는거군요!! 좋은 정보 감사합니닿ㅎㅎㅎ