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. 앱을 종료했을 때

 

 

아래의 그림을 보면 조금 더 구조적으로 쉽게 이해할 수 있을 것이다

 

출처 : https://kairo96.gitbooks.io/android/content/ch2.4.1.html

 

예1) 게임 플레이 중에 전화가 와서 화면이 가려진 상태에서 다시 돌아왔을 경우

  • activity가 더이상 보이지 않으므로 onStop( ) 으로 상태를 저장한다
  • 전화를 끊었을 경우 onRestart( ) 메소드에서 다시 돌아왔음을 인지
  • onStar( )로 다시 실행 후,
  • onResume( )에서 다시 플레이를 재개할지 안내문을 띄워줌

 

예2) 자동 로그인 : 한 번 로그인을 했을 때 사용자가 따로 저장버튼을 누르지 않아도 사용자 정보가 저장됨

(activity가 시작될 때 사용자가 앱을 종료하는 과정에서 사용자 정보를 저장함

-> 앱을 다시 실행할 때 이 정보를 받아와서 자동로그인을 해줌)