build.gradle에 다음 코드를 넣고 Sync Now를 눌러 준다
buildFeatures { viewBinding = true }
MainActivity.kt
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
Log.d("ActivityLifeCycle", "onCreate()")
}
override fun onStart() {
super.onStart()
Log.d("ActivityLifeCycle", "onStart()")
}
override fun onResume() {
super.onResume()
Log.d("ActivityLifeCycle", "onResume()")
}
override fun onPause() {
super.onPause()
Log.d("ActivityLifeCycle", "onPause()")
}
override fun onStop() {
super.onStop()
Log.d("ActivityLifeCycle", "onStop()")
}
override fun onRestart() {
super.onRestart()
Log.d("ActivityLifeCycle", "onRestart()")
}
override fun onDestroy() {
super.onDestroy()
Log.d("ActivityLifeCycle", "onDestroy()")
}
}
안드로이드 스튜디오 하단에 Logcat을 클릭하고
ActivityLifeCycle을 입력하면 다음과 같은 log를 확인할 수 있다
1. 앱 처음 시작 시
2. 앱을 밖으로 나갔을 때
3. 앱을 다시 열었을 때
4. 다른 앱을 위에 열었을 때
5. 다시 해당 앱을 열었을 때
6. 앱을 종료했을 때
아래의 그림을 보면 조금 더 구조적으로 쉽게 이해할 수 있을 것이다
예1) 게임 플레이 중에 전화가 와서 화면이 가려진 상태에서 다시 돌아왔을 경우
- activity가 더이상 보이지 않으므로 onStop( ) 으로 상태를 저장한다
- 전화를 끊었을 경우 onRestart( ) 메소드에서 다시 돌아왔음을 인지
- onStar( )로 다시 실행 후,
- onResume( )에서 다시 플레이를 재개할지 안내문을 띄워줌
예2) 자동 로그인 : 한 번 로그인을 했을 때 사용자가 따로 저장버튼을 누르지 않아도 사용자 정보가 저장됨
(activity가 시작될 때 사용자가 앱을 종료하는 과정에서 사용자 정보를 저장함
-> 앱을 다시 실행할 때 이 정보를 받아와서 자동로그인을 해줌)