개발(Android)/android studio

[Android Studio/Kotlin] Life Cycle of Activity

shinyelee 2022. 4. 17. 14:11

[안드로이드 스튜디오/코틀린] 액티비티의 생명주기(활동 수명 주기)

라이프사이클 도식

MainActivity.kt

package com.shinyelee.androidlifecycle

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.TextView

class MainActivity : AppCompatActivity() {

    val TAG: String = "로그"

    private lateinit var text_view: TextView

    // Lifecycle of Activity(액티비티의 생명주기) //
    // onCreate -> onStart -> onResume -> onPause -> onStop -> onRestart -> onDestroy

    // 액티비티 또는 프래그먼트 "생성"
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // 뷰 내에 컨텐츠를 세팅함(res 폴더 내 layout 폴더 내 activity_main 파일)
        setContentView(R.layout.activity_main)
        Log.d(TAG, "MainActivity - onCreate() called")
    }

    // 액티비티 활동 "시작"
    // 화면은 노출되나 유저와 상호작용 불가능
    override fun onStart() {
        super.onStart()
        Log.d(TAG, "MainActivity - onStart() called")
    }

    // 중지된 액티비티 활동 "재개"
    // 앱이 유저와 상호작용 가능
    override fun onResume() {
        // 상태바를 내리거나,
        // 홈버튼을 누르거나,
        // 전화가 오거나,
        // 다른 활동(액티비티)으로 이동하거나,
        // 기기 화면이 꺼지는 등
        // 앱 실행을 방해하는 이벤트가 발생하면 onResume() -> onPause()
        super.onResume()
        Log.d(TAG, "MainActivity - onResume() called")
    }

    // 액티비티 활동 "일시중지"
    // 구성요소가 포그라운드에 있지 않을 때 실행할 필요가 없는 기능을 모두 일시중지
    override fun onPause() {
        // 방해 이벤트가 발생하거나,
        // 멀티 윈도우 모드에서 해당 앱이 포커스 상태가 아니거나,
        // 새로운 반투명 활동(예: 대화상자)이 열릴 때 등
        // 활동 재개하면 onPause() -> onResume()
        super.onPause()
        text_view = findViewById(R.id.text_view)
        text_view.visibility = View.VISIBLE
        text_view.setText("onPause()")
        Log.d(TAG, "MainActivity - onPause() called")
    }

    // 액티비티 활동 "중단"
    // 구성요소가 화면에 보이지 않을 때 실행할 필요가 없는 기능을 모두 정지
    override fun onStop() {
        // 이 때 애니메이션을 일시중지하거나,
        // 세밀한 위치 업데이트에서 대략적인 위치 업데이트로 전환하는 등
        // 필요하지 않은 리소스를 해제하거나 조정해야 함
        super.onStop()
        Log.d(TAG, "MainActivity - onStop() called")
    }

    // 액티비티 활동 "재시작"
    override fun onRestart() {
        // 대기 상태(onStop())로 뒀던 앱 다시 접속할 때 등
        super.onRestart()
        Log.d(TAG, "MainActivity - onRestart() called")
    }

    // 액티비티 활동 "소멸"
    override fun onDestroy() {
        // 앱을 onStop() 상태로 너무 오래 방치했거나
        // 활동을 종료하거나
        // 기기 회전 또는 멀티 윈도우 모드로 인해 시스템이 일시적으로 활동을 소멸시킬 때 등
        // 활동이 소멸되기 전에 필요한 것을 정리할 수 있음(예: 뷰바인딩)
        super.onDestroy()
        Log.d(TAG, "MainActivity - onDestroy() called")
    }

}

참고

 

활동 수명 주기에 관한 이해  |  Android 개발자  |  Android Developers

활동은 사용자가 전화 걸기, 사진 찍기, 이메일 보내기 또는 지도 보기와 같은 작업을 하기 위해 상호작용할 수 있는 화면을 제공하는 애플리케이션 구성요소입니다. 각 활동에는 사용자 인터페

developer.android.com

반응형