안녕하세요, James 입니다.
업무에 시달리다 보니 정말 오랜만에 포스팅을 하게 됩니다.
오늘은 Android Life-cycle 에 관련한 내용을 정리 하고자 합니다.
생명주기라는 의미로 Android App 이 구동되는 시점부터 종료 되는 시점까지 어떤 함수들이 호출 되고 어떤 동작들을 하고 있는지 확인 해보도록 하겠습니다.
■ Activity Life Cycle (안드로이드 Activity 생명주기)
이미 C, C++ 또는 Java 프로그래밍을 해보신 분들이라면 아시겠지만 main() 함수를 통해 프로그램이 구동 됩니다.
이와 비슷하게 Android 에서도 Activity 의 시작은 onCreate() 라는 callback 함수를 호출하면서 시작하게 됩니다.
1. Activity Life Cycle Diagram
< 이미지 출처 : https://developer.android.com/guide/components/activities/activity-lifecycle.html >
위 그래프는 안드로이드 Activity 의 라이프 사이클을 보여주고 있습니다.
여기에 보여주고 있는 모든 함수들은 callback 함수로 Activity 가 생성되어 종료되는 시점까지 자동으로 호출 되므로 사용자가 모두 구현할 필요는 없지만 각각의 함수들을 이해하고 사용할 줄 알아야 합니다.
2. Callback 함수
No |
Callback 함수 |
Description |
1 |
onCreate() |
Activity 가 생성되면 가장먼저 호출 되는 callback 함수 |
2 |
onStart() |
Activity 가 사용자에게 보여지기 직전에 호출 되는 callback 함수 |
3 |
onResume() |
사용자가 응용프로그램과 상호 작용을 할 수 있는 상태에 호출되는 함수 - 사용자가 응용프로그램을 사용할 수 있는 상태를 의미 |
4 |
onPause() |
Activity 가 중지된 상태로 사용자로 부터 어떠한 입력도 받을 수 없고 어떤 코드도 실행 할 수 없는 상태 - 다른 Activity 가 실행되어 Activity Stack 의 최상단으로 올라가는 경우 호출 |
5 |
onStop() |
Activity 가 더 이상 보여지지 않는 경우 호출 |
6 |
onRestart() |
Activity 가 onStop() 이 호출 된 이후에 재시작 되는 경우 호출 되는 함수 |
7 |
onDestroy() |
시스템이 Activity 를 종료하기 직전에 호출 되는 callback 함수 |
위 표는 Activity Life Cycle 에서 호출되는 Callback 함수들을 나열한 것입니다.
언제 어떤 상황에서 호출 되는지 잘 알아 두셔야 앱을 개발하실때 편하게 사용 하실 수 있습니다.
우리가 일반적으로 가장 많이 구현하는 함수는 onCreate() 가 되며 onResume() 과 onPause() 도 앱의 성격에 따라 사용빈도수가 높은 편입니다.
이 callback 함수들의 사용 방법등은 차후에 다루도록 하겠습니다.
3. Sample Code
package com.tutorial.james.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
private static String TAG = MainActivity.class.getSimpleName();
/** Activity 가 처음 생성될때 호출 되는 함수 */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "The onCreate() called");
}
/** Activity 가 보여지기 직전에 호출 되는 함수 */
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "The onStart() called");
}
/** Activity 가 보여지고 input 을 받을 수 있는 상태 */
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "The onResume() called");
}
/** 다른 Activity 가 호출되는 시점에 호출 되는 함수 */
@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "The onPause() called");
}
/** Activity 가 더이상 보이지 않을때 호출 되는 함수 */
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "The onStop() called");
}
/** Activity 가 종료되기 직전에 호출 되는 함수 */
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "The onDestroy() called");
}
}
Activity 가 실행되고 종료될때까지 호출되는 Callback 함수의 순서를 확인하기 위해 debug log 를 찍어 보는 코드 입니다.
상기 코드로 앱을 실행 후 종료 시 아래와 같은 로그를 확인 할 수 있습니다.
Activity Life Cycle 을 잘 이해 하시면 안드로이드 앱 개발에 많은 도움이 되실 겁니다.
이상으로 Android Activity Life Cycle 에 대한 내용 마무리 하겠습니다.
P.S. 최근 업무에 시달리고, 육아에 시달리다 보니 강좌를 자주 올리지 못하고 있습니다. 최대한 짬을 내서 올릴 수 있도록 하겠습니다.
'Android (Java)' 카테고리의 다른 글
[안드로이드 코딩_008] Android Service (2회) (497) | 2017.07.25 |
---|---|
[안드로이드 코딩_007] Android Service (1회) (6) | 2017.07.14 |
[안드로이드 코딩_005]Android Studio UI (5) | 2017.02.22 |
[안드로이드 코딩_004]안드로이드 개발 시작 Hello world (669) | 2017.02.16 |
[안드로이드 코딩_003]안드로이드 개발환경 설정 (492) | 2017.02.10 |