관리 메뉴

IT 쟁이

Activity 생명주기 본문

Android

Activity 생명주기

클라인STR 2011. 4. 4. 23:08
Activity 생명주기 
 
 -Android application은 멀티태스킹을 지원하나 자원이 넉넉하지 않으므로 여러가지 제약이 따른다.
-Android runtime이 각 애플리케이션의 프로세스와 그 안에 있는 각 Activity를 관리한다.
-Activity 시작, 실행, 활성, 비활성화, 정지, 종료되는 일련의 상태를 순환한다.
-Activity Stack 으로 관리한다. StackActivity는 넣고 빼기만 할 뿐 순서가 바뀌지는 않는다.


* 스택상의 액티비티는 다음 3가지중 하나이다.

 
-실행(active, running): 사용자가 직접 사용하는 상태이다. 스택의 제일 위에 있으며 화면상에 서도 역시 제일 위에 있다. 입력 포커스를 가지며 사용자의 입력을 직접 처리한다.
- 일시 정지(pause) : 포커스를 잃었지만 사용자에게는 보이는 상태이다. 위쪽에 다른 액티비티가  있지만 화면 전체를 다 가리지 않았거나 반투명한 경우가 이에 해당한다. 살아 있는 상태와 같지만  시스템에 의해 강제 종료될 수도 있다.
-정지(stopped) :  다른 액티비티에 의해 완전히 가려진 상태이며 사용자 눈에 보이지 않는다. 그러나 모든 정보를 다 유지하고 있으므로 언제든지 다시 활성화될 수 있다. 시스템은 메모리가 부족하면 정지 상태의 액티비티를 언젠든지 강제 종료할 수 있다.

 


* 메서드 설명

 


onStart(), onStop(), onDestory() 구현하는 경우가 많지 않으나, onPause() 메서드는 대부분의 경우 구현해야 한다.
시스템이 onPause() 호출된 이후를 Killable 상태라고 하며 이 때 시스템은 언제든지 액티비티를 강제로 종료할 수 있다.
강제 종료당할경우 onStop이나 onDestory가 호출되지않으므로 실질적으로 보장된 생명주기는 onPause메서드가 마지막 이다. onPause()메서드에서 중요한 정보들을 저장해야 된다.
시스템이 액티비티를 중지하기전에 onSaveInstanceState 메서드를 호출하여 임시적인 데이터를 저장할 기회를 제공하며 이때 Bundlle 객체에 필요한 데이터를 저장하고 , 다시 액티비티가 재시작할경우 onCreate메서드에 Bundle객체를 이용하여 onRestoreInstanceState 메서드에서 Bundle객체에서 저장한 정보를 복원하면 강제종료되지 않은것 처럼 복구가능하다.

Comments