Android

[Android] LifeCycle

dev_zoe 2021. 1. 7. 04:20
반응형

안드로이드에서의 생명주기 ⇒ 사용자가 앱을 탐색하고, 앱에서 나가고, 앱에서 다시 돌아오는 활동이 작동하는 방식

Activity 클래스는 이러한 활동 상태 변화에 따른 작동을 정의한 콜백(시스템에서 자동으로 실행되는) 메소드 제공

 

메소드를 어떻게 사용하느냐는 흐름에 맞게 개발자의 기획 by 기획!

 

1. onCreate

  • 액티비티가 시작하면 제일 먼저 실행되는 메소드 ⇒ 필수 구현
  • 하나의 액티비티에서 전체 수명 주기동안 단 한번만 발생해야만 하는 로직 포함
  • 주로 화면을 정의하고, 변수 선언 및 초기화하는데에 사용
  • Activity가 실행되고나서 종료 후 재시작되면 onSaveInstanceState에서 저장한 내용과 동일한 bundle(키와 값이 쌍을 이루는 데이터)을 넘겨줌 -> 이전 상태값 전달
  • 디바이스가 회전되어 가로/세로 전환 시 리소스를 새로 갱신해야할 시 호출
//lateinit: 속성 초기화를 미룸 => 변수만 일단 선언해두는 것
lateinit var textView: TextView

// ? : null이 가능한 변수임을 명시
var gameState: String? = null

override fun onCreate(savedInstanceState: Bundle?) {
    // call the super class onCreate to complete the creation of activity like
    // the view hierarchy
		// 액티비티 종료 후 재시작 시 
    super.onCreate(savedInstanceState)

    // set the user interface layout for this activity
    // the layout file is defined in the project res/layout/main_activity.xml file
    setContentView(R.layout.main_activity)

    // initialize member TextView so we can manipulate it later
    textView = findViewById(R.id.text_view)
}

// invoked when the activity may be temporarily destroyed, save the instance state here
override fun onSaveInstanceState(outState: Bundle?) {
    outState?.run {
        putString(GAME_STATE_KEY, gameState)
        putString(TEXT_VIEW_KEY, textView.text.toString())
    }
    // call superclass to save any view hierarchy
    super.onSaveInstanceState(outState)
}

 

2. onStart()

  • 액티비티가 시작됨 상태로 도입하는 과정 ⇒ 액티비티가 사용자에게 보여지기 직전에 호출
  • 액티비티가 다른 액티비티에 의해 멈췄다가 다시 보여지면, onRestart 후 이 메소드가 실행

3. onResume()

  • 액티비티가 활동 재개된 상태
  • 앱에서 포커스(화면이 보일 때)가 떠날 때까지 앱이 이 상태에 머묾.
  • 다른 액티비티나 다이얼로그, 팝업 등으로 이동하거나 기기가 꺼졌다가 다시 액티비티로 돌아올때 onResume 실행
  • 액티비티 재개시 반드시 수행해야하는 활동을 onResume에서 실행하는것이 바람직

4. onPause()

  • 액티비티의 활동이 일시적으로 멈춘상태 ⇒ 다른 액티비티로 전환하면서 화면이 조금이라도 남아있는 상태
  • 멀티 윈도우 모드와 관련
  • Activity 화면이 조금이라도 보일때까지는 onPause, 완전히 보이지 않을때 onStop
  • 아주 짧은시간안에 실행되므로 앱이나 사용자 데이터를 저장, 네트워크 호출, DB 트랜잭션을 실행하면 안됨.

5. onStop()

  • 다른 액티비티에 의해 이 액티비티가 완전히 가려져 더이상 보이지 않을 때 호출
  • 액티비티가 다시 실행될 때 거치는 onRestart는 onStop을 거쳐야만 하므로, onStop 실행여부와 관련없이 다시 실행될 때 무조건 실행해야하는것은 onResume에서 실행해야함

6. onDestroy()

 

  • 액티비티가 소멸될 때(finish()) 호출
  • 구성변경(멀티윈도우 모드, 기기회전)시 호출
  • 액티비티에서 사용한 리소스(DB, network...) 해제하는데 주로 쓰임

생명주기 메소드의 실행 순서에 관한 예제코드(링크)

- 생명주기 메소드가 실행됨에따라 Toast 메시지를 띄우는 코드

 

출처 :

https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko#kotlin

https://siadaddy-cordinglife.tistory.com/12

 

반응형

'Android' 카테고리의 다른 글

[Android] 팔레트 항목 뜯어보기  (0) 2021.01.21
[Android] AsyncTask 클래스  (0) 2021.01.20
[Android] 스레드(Thread)와 핸들러(Handler)  (0) 2021.01.20
[Android] Intent(인텐트)  (0) 2021.01.20
[Android] Manifest란?  (0) 2020.12.31