[Android/Kotlin] [TIL] LifeCycle

[Android/Kotlin] [TIL] LifeCycle

액티비티 생명주기

1) 액티비티 생명주기 패러다임

img

2) 액티비티의 수명

  • onCreate() ~ onDestroy()
  • onCreate()란?
    • 액티비티가 생성되어 레이아웃 설정 등을 수행한다.
  • onDestroy()란?
    • 호출되는 시점에 사용하고 있는 리소스를 모두 해제하고 생을 마감한다.

3) 액티비티의 화면이 눈에 보이게 되는 Visibility

  • onStart()와 onStop()호출 사이에 있다.
  • 이 기간 중에는 사용자가 액티비티를 화면에서 보고 이와 상호 작용 할 수 있다.
  • onStop()이 호출되어 새 액티비티가 시작되면 이 액티비티는 더 이상 표시되지 않게 된다.
  • 시스템은 액티비티의 전체 수명 내내 onStart() 및 onStop()을 여러 번 호출 할 수 있다.
  • 이때 액티비티는 사용자에게 표시되었다 숨겨지는 상태를 오가게 된다.

4) 액티비티가 foreground에서 동작하는 구간

  • onResume()에서 onPause()호출 사이를 말한다.
  • 이 기간 중에는 이 액티비티가 화면에서 다른 모든 액티비티 앞에 표시된다.
  • 사용자 입력도 여기에 집중된다.
  • 액티비티는 전경에 나타났다 숨겨지는 전환을 자주 반복할 수 있다.
  • 예를 들어, 기기가 절전모드에 들어가거나 대화상자가 나타나면 onPause()가 호출된다.

5) 수명주기 콜백 메소드

  • 액티비티가 생성되면서 해제될 때 까지 액티비티의 상태에 따라서 불려지는 메소드를 라이프 사이클 콜백 메소드라 부른다.

  • 애플리케이션 개발자는 필요한 경우에 해당 콜백 메소드를 재 정의하여 필요한 일을 수행하게 할 수 있다.

  • 주요 콜백 메소드

    • onCreat() : 반드시 구현해야하는 메소드로서 액티비티가 생성되면서 호출된다.
      • 가장 중요한 작업은 화면은 setContentView()를 호출하여 설정하는 것이다.

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()")
        }
      
    }
    

© 2023. All rights reserved.

by SoftyChoo