[Android/Kotlin] [TIL] LifeCycle
액티비티 생명주기
1) 액티비티 생명주기 패러다임
2) 액티비티의 수명
- onCreate() ~ onDestroy()
- onCreate()란?
- 액티비티가 생성되어 레이아웃 설정 등을 수행한다.
- onDestroy()란?
- 호출되는 시점에 사용하고 있는 리소스를 모두 해제하고 생을 마감한다.
3) 액티비티의 화면이 눈에 보이게 되는 Visibility
- onStart()와 onStop()호출 사이에 있다.
- 이 기간 중에는 사용자가 액티비티를 화면에서 보고 이와 상호 작용 할 수 있다.
- onStop()이 호출되어 새 액티비티가 시작되면 이 액티비티는 더 이상 표시되지 않게 된다.
- 시스템은 액티비티의 전체 수명 내내 onStart() 및 onStop()을 여러 번 호출 할 수 있다.
- 이때 액티비티는 사용자에게 표시되었다 숨겨지는 상태를 오가게 된다.
4) 액티비티가 foreground에서 동작하는 구간
- onResume()에서 onPause()호출 사이를 말한다.
- 이 기간 중에는 이 액티비티가 화면에서 다른 모든 액티비티 앞에 표시된다.
- 사용자 입력도 여기에 집중된다.
- 액티비티는 전경에 나타났다 숨겨지는 전환을 자주 반복할 수 있다.
- 예를 들어, 기기가 절전모드에 들어가거나 대화상자가 나타나면 onPause()가 호출된다.
5) 수명주기 콜백 메소드
액티비티가 생성되면서 해제될 때 까지 액티비티의 상태에 따라서 불려지는 메소드를 라이프 사이클 콜백 메소드라 부른다.
애플리케이션 개발자는 필요한 경우에 해당 콜백 메소드를 재 정의하여 필요한 일을 수행하게 할 수 있다.
주요 콜백 메소드
- onCreat() : 반드시 구현해야하는 메소드로서 액티비티가 생성되면서 호출된다.
- 가장 중요한 작업은 화면은 setContentView()를 호출하여 설정하는 것이다.
- onCreat() : 반드시 구현해야하는 메소드로서 액티비티가 생성되면서 호출된다.
6) 연습 코드
- FirstActivity
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()")
}
}
SecondActivity
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()") } }