0Pricing
Android Academy · 강의

액티비티 및 수명 주기

Activity가 무엇인지 이해하고 Activity 수명 주기 콜백(onCreate, onStart, onResume, onPause, onStop, onDestroy)을 익히며 ViewBinding을 사용합니다.

액티비티 및 수명 주기은(는) CoddyKit의 무료 Android Academy 강의입니다. 이것은 7개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Android Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Android Academy 강의에는 총 7개의 강의가 포함되어 있습니다.

액티비티란?

액티비티는 Android 앱의 하나의 화면입니다.

  • 모든 화면(로그인, 홈, 설정)은 액티비티입니다.
  • 레이아웃(XML)과 사용자 상호작용을 관리합니다.
  • AndroidManifest.xml에 선언합니다.

웹 페이지에 해당하는 Android 구성 요소라고 생각하면 됩니다. 각 페이지가 하나의 액티비티입니다.

액티비티 수명 주기

사용자가 앱을 탐색할 때 액티비티는 여러 수명 주기 상태를 거칩니다.

  • 생성됨 → 시작됨 → 재개됨(표시되고 활성화됨)
  • 일시 중지됨(일부가 가려짐)
  • 중지됨(완전히 가려짐)
  • 소멸됨(액티비티가 사라짐)

이러한 전환에 대응하려면 수명 주기 메서드를 재정의합니다.

수명 주기 콜백

주요 수명 주기 콜백은 여섯 가지입니다.

  • onCreate() — 액티비티가 생성되는 중입니다. 여기에서 레이아웃을 설정합니다.
  • onStart() — 액티비티가 표시됩니다.
  • onResume() — 액티비티가 전경에 있으며 사용자가 상호작용할 수 있습니다.
  • onPause() — 사용자가 화면을 떠납니다. 임시 데이터를 저장합니다.
  • onStop() — 액티비티가 더 이상 표시되지 않습니다.
  • onDestroy() — 액티비티가 소멸되는 중입니다.

MainActivity 예제

수명 주기 기록 기능을 포함한 최소 액티비티입니다.

import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {

    private val TAG = "MainActivity"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        Log.d(TAG, "onCreate")
    }

    override fun onResume() {
        super.onResume()
        Log.d(TAG, "onResume — user is here")
    }

    override fun onPause() {
        super.onPause()
        Log.d(TAG, "onPause — saving state")
    }

    override fun onDestroy() {
        super.onDestroy()
        Log.d(TAG, "onDestroy")
    }
}

수명 주기가 중요한 이유

수명 주기를 무시하면 다음과 같은 실수가 발생할 수 있습니다.

  • onResume에서 동영상을 재생하지만 onPause에서 일시 중지하지 않음 — 배터리가 소모됨
  • onCreate에서 센서 수신기를 등록하지만 onDestroy에서 등록 해제하지 않음 — 메모리 누수
  • onPause에서 양식 데이터를 저장하지 않음 — 통화 중 사용자의 진행 상황이 사라짐

상태 저장: onSaveInstanceState

사용자가 휴대전화를 회전하면 액티비티가 소멸되었다가 다시 생성됩니다. 이때 UI 상태가 사라집니다.

일시적인 상태는 onSaveInstanceState(bundle)에서 저장하고 onCreate(savedInstanceState)에서 복원합니다.

상태 저장 및 복원

구성 변경이 발생해도 데이터를 유지합니다.

class CounterActivity : AppCompatActivity() {

    private var count = 0

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_counter)

        // Restore saved state after rotation
        count = savedInstanceState?.getInt("count") ?: 0
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putInt("count", count)
    }
}

백 스택

Android는 액티비티의 백 스택을 관리합니다.

  • 새 액티비티를 실행하면 스택에 추가됩니다.
  • 뒤로 가기를 누르면 맨 위의 액티비티가 스택에서 제거되고 소멸됩니다.
  • 이전 액티비티는 자동으로 재개됩니다.

따라서 현재 화면을 백 스택에서 특별히 제거하려는 경우가 아니라면 finish()를 직접 호출하지 않는 것이 좋습니다.

구성 변경

구성 변경(화면 회전, 언어 변경, 키보드 연결)이 발생하면 기본적으로 액티비티가 다시 생성됩니다.

현대적인 해결 방법은 ViewModel을 사용하는 것입니다. ViewModel은 구성 변경 후에도 유지되며 데이터를 안전하게 보관합니다. 아키텍처 모듈에서 ViewModel을 배우게 됩니다.

빠른 확인

레이아웃을 설정하려면( setContentView를 호출하려면) 어느 수명 주기 메서드에서 작성해야 하나요?

복습: 액티비티와 수명 주기

이제 Android 액티비티를 이해했습니다.

  • 액티비티 = 앱의 하나의 화면
  • 수명 주기: onCreate → onStart → onResume → onPause → onStop → onDestroy
  • onSaveInstanceState에 일시적인 상태 저장
  • 화면 회전 시 액티비티가 소멸되었다가 다시 생성됨
  • Android가 백 스택을 자동으로 관리함

다음에는 레이아웃과 뷰를 사용해 화면을 설계해 보겠습니다.

자주 묻는 질문

“액티비티 및 수명 주기” 강의는 무료인가요?

네 — “액티비티 및 수명 주기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Android Academy 강의 전체를 잠금 해제할 수 있습니다. Android Academy 강의에는 총 7개의 강의가 포함되어 있습니다.

“액티비티 및 수명 주기”에서 뭘 배우나요?

Activity가 무엇인지 이해하고 Activity 수명 주기 콜백(onCreate, onStart, onResume, onPause, onStop, onDestroy)을 익히며 ViewBinding을 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 Android Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Android Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Android Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 7개 중 2번째 강의입니다.

“액티비티 및 수명 주기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Android Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Android Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 프로젝트 구조 및 매니페스트
  2. 액티비티 및 수명 주기
  3. 레이아웃 및 뷰
  4. 사용자 입력 처리
  5. 인텐트 및 탐색
  6. 프래그먼트
  7. 권한 및 런타임 요청
← Android Academy(으)로 돌아가기