💡 앱이 실행될 때부터 종료될 때까지 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을 고려하여 최적화된 앱을 만들어보세요!
'Frontend > 실습' 카테고리의 다른 글
167. [AI][Android Studio] 로직개발하기 : 다중페이지 개발(Activity Lifecycle) (0) | 2025.03.05 |
---|---|
166. [AI][Android Studio] 로직개발하기 : 타이머 앱 실습 (0) | 2025.03.04 |
165. [AI][Android Studio] 로직개발하기 : 고양이 수명계산하기 (0) | 2025.03.04 |
164. [AI][Android Studio] 로직개발하기 : 주사위게임 앱 제작 (1) | 2025.03.03 |
162. [AI][Android Studio] 안드로이드 스튜디오 설치하는 방법 (0) | 2025.03.03 |