⊙ Activity Life Cycle (액티비티 생명주기)
: Activity에는 Life Cycle이 존재한다. Life Cycle은 아래 그림과 같다.
* 각 함수들의 설명
Method |
Description |
Killable? |
Next |
||
onCreate() |
Activity가 처음 만들어질 때 호출되는 함수. 보통 create view, bind data to list 등을 onCreate()에서 한다. 그리고 이전 상태를 포함한 Bundle을 제공한다. |
No |
onStart() |
||
|
onRestart() |
Activity가 다시 시작되기 전에 Activity가 멈춘 후 호출되는 함수. |
No |
onStart() |
|
onStart() |
Activity가 User에게 보여질 때 호출되는 함수. |
No |
onResume() or onStop() |
||
|
onResume() |
Activity가 Focus를 다시 찾았을 때 호출되는 함수. |
No |
onPause() |
|
onPause() |
Activity 위에 다른 Activity 가 올라오거나 하여 focus 를 잃었을 때 호출되는 함수. |
Pre-(HONEYCOMB) |
onResume() or onStop() |
||
onStop() |
완전히 화면을 벗어날 때 호출되는 함수. 예를 들어 홈키를 눌러서 홈화면으로 이동되면 호출된다. |
Yes |
onRestart() or onDestroy() |
||
onDestroy() |
Activity가 Destroy되기 전에 호출되는 함수. |
Yes |
nothing |
출처 : http://developer.android.com/intl/ko/reference/android/app/Activity.html
⊙ 예제
♠ Source Code
1. MainActivity
12345678910111213141516171819202122232425262728package com.example.dateutiltest;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity implements RadioGroup.OnCheckedChangeListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnLifeCycle = (Button) findViewById(R.id.btn_life_cycle);
btnLifeCycle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, LifeCycleActivity.class);
startActivity(intent);
}
});
}
}
2. LifeCycleActivity
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869package com.example.dateutiltest;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class LifeCycleActivity extends Activity{
private static int number = 0;
private int currentNum = number;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
number++;
currentNum = number;
Log.i(currentNum + "번 Acitivty", "onCreate()");
setContentView(R.layout.activity_main);
TextView title = (TextView) findViewById(R.id.title);
title.setText(currentNum + "번 Activity 입니다.");
Button btnLifeCycle = (Button) findViewById(R.id.btn_life_cycle);
btnLifeCycle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(LifeCycleActivity.this, LifeCycleActivity.class);
startActivity(intent);
}
});
}
@Override
protected void onStart() {
super.onStart();
Log.i(currentNum + "번 Acitivty", "onStart()");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i(currentNum + "번 Acitivty", "onRestart()");
}
@Override
protected void onResume() {
super.onResume();
Log.i(currentNum + "번 Acitivty", "onResume()");
}
@Override
protected void onPause() {
super.onPause();
Log.i(currentNum + "번 Acitivty", "onPause()");
}
@Override
protected void onStop() {
super.onStop();
Log.i(currentNum + "번 Acitivty", "onStop()");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i(currentNum + "번 Acitivty", "onDestroy()");
number--;
}
}
☞ 예제 화면
① Main Activity 실행
② LifeCycle 알아보기 버튼 클릭 후 실행된 1번 Activity
③ 1번 Activity 실행되었을 때 호출 되는 함수 순서 : onCreate() → onStart() → onResume()
④ 1번 Actvity에서 LifeCycle 버틀 클릭 후 생성된 2번 Activity
⑤ 1번 Activity에서는 onPause() 함수 호출. 2번 Activity에서는 onCreate() → onStart() → onResume() 순서대로 실행. 그리고 1번 Activity는 onStop()함수를 호출.
⑥ 2번 Activity에서 Back Key를 눌렀을 경우 : 2번 Activity에서 onPause()함수를 호출하고,
1번 Activity에서는 onRestart() → onStart() → onResume() 순서로 실행되고,
2번 함수는 onStop() → onDestroy() 순서로 Activity가 종료된다.
⑦ 1번 Activity에서 Back Key를 눌렀을 경우 : 1번 Activity에서 onPause()함수를 호출하고,
Main Activity에서는 onRestart() → onStart() → onResume() 순서로 실행되고(Log를 안찍어서 안보임),
1번 함수는 onStop() → onDestroy() 순서로 Activity가 종료된다.
'Programming > Android' 카테고리의 다른 글
[Android] GPS 설정 체크하기 (0) | 2016.12.18 |
---|---|
[Android] Volley & Patch request (0) | 2016.12.18 |
[Android] 외부 앱 실행 (0) | 2015.11.30 |
[Android] Android Soft KeyBoard Show and Hide (0) | 2015.11.18 |
[Android] ScrollView 안에 ListView height 지정 (2) | 2015.11.09 |