Frontend/실습

163. [AI][Android Studio] Android Activity Lifecycle(활동 수명 주기) 완벽 가이드

천재단미 2025. 3. 3. 19:45
728x90
반응형

 

 

 

 

💡 앱이 실행될 때부터 종료될 때까지 Activity가 어떻게 변하는지 이해하면, 앱의 안정성을 향상시키고 비정상 종료를 방지할 수 있습니다.

이 글에서는 Android Activity Lifecycle(활동 수명 주기)에 대해 자세히 알아보겠습니다.

 


1. Android Activity Lifecycle이란?

Activity Lifecycle(활동 수명 주기)앱의 Activity가 생성되고, 실행되고, 중지되며, 종료되는 과정을 의미합니다.

사용자가 앱을 실행하면 Activity가 생성되며, 앱을 나가면 Activity가 중지 또는 종료됩니다.

이러한 과정에서 시스템이 자동으로 호출하는 콜백 메서드가 존재합니다.

 

 

Activity Lifecycle을 올바르게 관리하면 다음과 같은 이점을 얻을 수 있습니다.

  •  앱이 갑자기 종료되지 않음
  •  메모리 관리가 원활해짐
  • 사용자가 다시 돌아왔을 때 상태가 유지됨
  • 배터리 소모를 줄일 수 있음

Android의 Activity Lifecycle은 다음과 같이 구성됩니다.

위 그림을 통해 각 상태에서 호출되는 메서드를 확인할 수 있습니다.


2. Activity Lifecycle 주요 단계와 콜백 메서드

단계 상태 설명 주요 콜백 메서드

활동 시작 Activity가 처음 생성됨 onCreate()
활동 시작됨 Activity가 화면에 보이기 시작함 onStart()
활동 재개됨 Activity가 사용자와 상호작용 가능 상태 onResume()
활동 일시정지됨 다른 Activity가 나타났지만 완전히 가려지지 않음 onPause()
활동 정지됨 Activity가 더 이상 사용자에게 보이지 않음 onStop()
활동 소멸됨 Activity가 완전히 종료됨 onDestroy()

 

 


3. 각 상태에서의 동작과 구현 방법

1️⃣ onCreate() - Activity 생성

onCreate()는 Activity가 처음 생성될 때 한 번만 호출됩니다.

 

이 단계에서 해야 할 작업

 화면 레이아웃 설정 (setContentView())

변수 초기화

네트워크 연결 설정

데이터 로딩

 

  • 코드 예제
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); // UI 설정

    // 변수 초기화
    TextView textView = findViewById(R.id.textView);
    textView.setText("안녕하세요!");

    // 저장된 데이터 복원
    if (savedInstanceState != null) {
        String savedText = savedInstanceState.getString("text_key");
        textView.setText(savedText);
    }
}

 

 

  • 주의: onCreate()에서 네트워크 요청을 직접 실행하면 앱이 느려질 수 있으므로, AsyncTask 또는 Coroutine을 사용하세요.

2️⃣ onStart() - Activity 시작됨

onStart()는 Activity가 사용자에게 보이기 시작할 때 호출됩니다.

이 단계에서 해야 할 작업

UI 업데이트

애니메이션 또는 데이터 갱신

센서, GPS, 네트워크 연결 설정


  • 코드 예제
@Override
protected void onStart() {
    super.onStart();
    Log.d("Activity Lifecycle", "onStart() 호출됨");
}

 

주의: onStart()에서 너무 무거운 작업을 수행하면 앱이 멈춘 것처럼 보일 수 있음.

 


3️⃣ onResume() - Activity 재개됨

onResume()는 Activity가 사용자와 상호작용할 준비가 되었을 때 호출됩니다.

이 단계에서 해야 할 작업

 비디오, 음악 재생 시작

센서, 카메라 활성화

UI 업데이트

 

  • 코드 예제
@Override
protected void onResume() {
    super.onResume();
    Log.d("Activity Lifecycle", "onResume() 호출됨");
}

 

 

주의: onResume()에서는 빠르게 실행될 수 있는 코드만 실행하세요.

 


4️⃣ onPause() - Activity 일시정지됨

onPause()는 다른 Activity가 실행될 때 호출되지만, 완전히 종료된 것은 아닙니다.

이 단계에서 해야 할 작업

 동영상, 음악 일시정지

센서, 카메라 해제

 네트워크 연결 해제

 

  • 코드 예제
@Override
protected void onPause() {
    super.onPause();
    Log.d("Activity Lifecycle", "onPause() 호출됨");
}

 

주의: onPause()가 호출된 후에는 언제든지 onResume()이 다시 호출될 수 있습니다.

 


5️⃣ onStop() - Activity 정지됨

onStop()는 Activity가 사용자에게 더 이상 보이지 않을 때 호출됩니다.

이 단계에서 해야 할 작업

 애니메이션 중지

 네트워크, GPS 연결 해제

 데이터 저장

 

  • 코드 예제
@Override
protected void onStop() {
    super.onStop();
    Log.d("Activity Lifecycle", "onStop() 호출됨");
}

 

주의: onStop() 이후에도 Activity는 메모리에 남아 있을 수 있습니다.

 

 


6️⃣ onDestroy() - Activity 종료됨

onDestroy()는 Activity가 완전히 종료되기 전에 호출됩니다.

이 단계에서 해야 할 작업

데이터 저장

 리소스 정리

서비스 해제

 

  • 코드 예제
@Override
protected void onDestroy() {
    super.onDestroy();
    Log.d("Activity Lifecycle", "onDestroy() 호출됨");
}

 

주의: onDestroy()는 반드시 호출된다는 보장이 없습니다.

 


4. Activity Lifecycle 활용 예제

 4-1. 화면 회전 시 데이터 유지하기

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putString("text_key", "저장할 데이터");
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    String restoredText = savedInstanceState.getString("text_key");
}

 

이 방법을 사용하면 화면이 회전해도 데이터가 유지됩니다.

 


 4-2. 동영상 앱에서 생명 주기 관리

@Override
protected void onResume() {
    super.onResume();
    videoView.start(); // 동영상 재생
}

@Override
protected void onPause() {
    super.onPause();
    videoView.pause(); // 동영상 일시정지
}

 

 

사용자가 앱을 벗어났다가 돌아왔을 때도 동영상을 이어서 볼 수 있습니다.

 


5. 결론

✔ Android Activity Lifecycle을 이해하면 앱을 더 효율적이고 안정적으로 만들 수 있습니다.

✔ onCreate(), onResume(), onPause(), onDestroy() 등 필수적인 메서드를 적절하게 활용하세요.

메모리 누수를 방지하고 앱 성능을 향상시키려면 불필요한 리소스를 해제하는 것이 중요합니다.

 

이제 Android 앱을 만들 때 Activity Lifecycle을 고려하여 최적화된 앱을 만들어보세요! 

728x90
반응형
home top bottom
}