MyCloud
[안드로이드] 액티비티의 수명주기 본문
안드로이드 액티비티의 상태
안드로이드에서 액티비티는 어플리케이션 컴포넌트로서,
창이 하나씩 주어져 이곳에 사용자 인터페이스(UI)를 끌어올 수 있습니다.
한 액티비티가 새로운 액티비티의 시작으로 인해 중단된 경우,
이 상태 변경은 수명주기 콜백 메서드를 통해 알려집니다.
따라서, 액티비티가 가질 수 있는 상태와 이 상태 변화에 따른 콜백 메서드에는
어떤 것이 있는지 수명주기를 통해 알아보겠습니다.
상 태 | 설 명 |
실행 (Running) | 화면 상에 액티비티가 보이면서 실행되어 있는 상태 액티비티 스택의 최상위에 있으며 포커스를 가지고 있음 |
일시중지 (Paused) |
사용자에게 보이기는 하지만 다른 액티비티가 위에 있어 포커스를 받지 않는 상태, 대화상자가 위에 있어 일부가 가려지는 경우에 해당 |
중지 (Stopped) |
다른 액티비티에 의해 완전히 가려져 보이지 않는 상태 |
액티비티의 상태는 위의 표와 같이 실행, 일시중지, 중지의 상태를 가집니다.
안드로이드 액티비티의 수명주기
다음 그림은 액티비티의 수명주기입니다.
액티비티가 처음 실행되어 메모리에 만들어지는 과정이 onCreate() 에 해당합니다.
이후 onStart(), onResume() 메소드를 거쳐 실행(Running) 상태가 되고,
다른 액티비티가 상위에 오게 되면 onPause() 가 호출되면서 일시정지(Paused) 상태로,
onStop() 을 통해 중지(Stopped) 상태로 변하게 됩니다.
마지막으로 앱을 종료하여 메모리에서 없어질 경우에 onDestroy() 메소드가 호출됩니다.
상태 메소드 | 설 명 |
onCreate() | 액티비티를 생성할 때 호출 액티비티의 필수 구성 요소를 초기화 setContentView()를 통해 UI 레이아웃을 정의 번들 객체를 참조하여 이전 상태를 복원 가능 |
onStart() |
액티비티가 화면에 보이기 바로 전에 호출 |
onResume() |
액티비티가 사용자와 상호작용하기 바로 전에 호출 |
onRestart() |
액티비티가 중지된 이후에 호출되는 메소드로 다시 시작되기 바로 전에 호출 |
onPause() |
사용자가 액티비티를 떠난다는 첫 번째 신호 저장되지 않은 데이터를 저장소에 저장하거나 진행 중인 작업을 중지하는 등의 기능을 수행 (사용자가 돌아오지 않을 수 있기 때문에) 액티비티가 이 상태에 들어가면 액티비티 강제종료 가능 |
onStop() |
액티비티가 사용자에게 더 이상 보이지 않을 때 호출 액티비티가 소멸되거나 다른 액티비티가 가릴 때 호출 |
onDestroy() |
액티비티가 소멸되어 없어지기 전에 호출 어플리케이션에 의해 종료되거나 강제종료 시에 호출 |
* finish() 메소드 : finishActivity() 메소드를 통해 해당 액티비티를 명시적으로 종료할 수 있으나,
Android 에서는 시스템이 액티비티의 수명을 대신 관리해주므로 직접 종료하지 말 것을 권장
안드로이드 수명주기 메서드 구현
위에서 살펴본 수명주기 메서드는 다음과 같이 오버라이딩 해서 사용합니다.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast.makeText(MainActivity.this, "onCreate ...", Toast.LENGTH_SHORT).show();
}
@Override
protected void onStart() {
super.onStart();
Toast.makeText(MainActivity.this, "onStart ...", Toast.LENGTH_SHORT).show();
}
@Override
protected void onResume() {
super.onResume();
Toast.makeText(MainActivity.this, "onResume ...", Toast.LENGTH_SHORT).show();
}
@Override
protected void onPause() {
super.onPause();
Toast.makeText(MainActivity.this, "onPause ...", Toast.LENGTH_SHORT).show();
}
@Override
protected void onStop() {
super.onStop();
Toast.makeText(MainActivity.this, "onStop ...", Toast.LENGTH_SHORT).show();
}
@Override
protected void onDestroy() {
super.onDestroy();
Toast.makeText(MainActivity.this, "onDestroy ...", Toast.LENGTH_SHORT).show();
}
}
'Programming > Android' 카테고리의 다른 글
[안드로이드] 간단한 로그인 화면 만들기 (1) (0) | 2016.05.01 |
---|---|
[안드로이드] SharedPreference 사용 방법 (0) | 2016.05.01 |
[안드로이드] 머티리얼 디자인을 위한 라이브러리 (AppCompat, Design Library) (0) | 2016.04.09 |
[안드로이드] 언어에 따른 리소스 설정방법 (0) | 2016.04.09 |
[안드로이드] 해상도에 따른 이미지 저장방법 (0) | 2016.04.09 |