(kotlin) activity lifecycle

박용석·2023년 9월 13일
4
  • The activity lifecycle


공식문서링크(the activity lifecycle)

오늘은 액티비티의 생명주기에 대해서 공부를 해보자

  • onCreate()

    Activity가 생성될 때 호출된다. 이 메서드는 한 번만 호출되며, Activity의 초기 설정 및 리소스 초기화를 수행하는 데 사용된다. setContentView()를 통해 레이아웃을 화면에 연결하고 초기화 코드를 실행하며 반드시 구현되어야 한다.

  • onStart()

    onCreate() 이후 호출되며, Activity가 시작되었음을 나타낸다.

  • onResume()

    Activity가 화면에 표시되고 사용자와 상호작용 가능한 상태로 들어갈 때 호출되며 포커스를 받는다.

  • Activity running

    Activity가 활성 상태로 사용자와 상호작용하며 동작한다.

  • onPause()

    다른 Activity가 화면을 부분적으로 덮거나 포커스를 잃을 때 호출된다. (예를 들어 다른 Activity로 이동하거나 전화가 오는 경우)

  • onStop()

    Activity가 화면에서 완전히 가려지거나 다른 Activity로 전환되어 화면에 보이지 않을 때 호출된다. 이 단계에서는 화면 공간을 더 이상 차지하지 않는다.

  • onDestroy()

    Activity가 완전히 종료되고 메모리에서 제거될 때 호출된다. 이 Activity와 관련된 리소스 정리 및 정리 작업이 주로 이루어진다.

이 흐름은 Activity의 일반적인 라이프사이클이다. Activity 상태 간 전환은 여러 이벤트에 의해 트리거될 수 있으며, 이러한 라이프사이클 메서드를 오버라이드하여 각 상태 변환에 대한 동작을 정의할 수 있다.

다음으로 간단한 예제를 만들어서 Activity에 lifecycle을 확인해보자

MainActivity.kt

package com.example.map

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.example.map.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    private val binding by lazy { ActivityMainBinding.inflate(layoutInflater)}

    // Activity가 생성될 때 호출
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        // 여기에서 초기화 및 설정 작업을 수행
        Log.d(TAG, "onCreate 호출됨")

    }

    // Activity가 시작될 때 호출
    override fun onStart() {
        super.onStart()

        // Activity가 사용자에게 보이기 시작
        Log.d(TAG, "onStart 호출됨")
    }

    // Activity가 재개될 때 호출
    override fun onResume() {
        super.onResume()

        // Activity가 사용자와 상호작용할 수 있도록 준비
        Log.d(TAG, "onResume 호출됨")
    }

    // Activity가 일시 중지될 때 호출
    override fun onPause() {
        super.onPause()

        // Activity가 부분적으로 가려지거나 포커스를 잃는다
        Log.d(TAG, "onPause 호출됨")
    }

    // Activity가 중지될 때 호출
    override fun onStop() {
        super.onStop()

        // Activity가 사용자에게 더 이상 보이지 않는다
        Log.d(TAG, "onStop 호출됨")
    }

    // Activity가 파괴될 때 호출
    override fun onDestroy() {
        super.onDestroy()

        // Activity가 종료되고 메모리에서 제거
        Log.d(TAG, "onDestroy 호출됨")
    }

    companion object {
        private const val TAG = "ActivityLifeCycle"
    }
}
  • 결과물

profile
슬기로운 개발 활동

1개의 댓글

comment-user-thumbnail
2023년 9월 14일

아 onStop 때 화면이 완전히 다른 화면으로 넘어가는거군요!! 좋은 정보 감사합니닿ㅎㅎㅎ

답글 달기