Android
Activity 생명주기
클라인STR
2011. 4. 4. 23:08
Activity 생명주기
* 스택상의 액티비티는 다음 3가지중 하나이다.
* 메서드 설명
onStart(), onStop(), onDestory() 구현하는 경우가 많지 않으나, onPause() 메서드는 대부분의 경우 구현해야 한다.
시스템이 onPause() 호출된 이후를 Killable 상태라고 하며 이 때 시스템은 언제든지 액티비티를 강제로 종료할 수 있다.
강제 종료당할경우 onStop이나 onDestory가 호출되지않으므로 실질적으로 보장된 생명주기는 onPause메서드가 마지막 이다. onPause()메서드에서 중요한 정보들을 저장해야 된다.
또 시스템이 액티비티를 중지하기전에 onSaveInstanceState 메서드를 호출하여 임시적인 데이터를 저장할 기회를 제공하며 이때 Bundlle 객체에 필요한 데이터를 저장하고 , 다시 액티비티가 재시작할경우 onCreate메서드에 Bundle객체를 이용하여 onRestoreInstanceState 메서드에서 Bundle객체에서 저장한 정보를 복원하면 강제종료되지 않은것 처럼 복구가능하다.
-Android application은 멀티태스킹을 지원하나 자원이 넉넉하지 않으므로 여러가지 제약이 따른다.
-Android runtime이 각 애플리케이션의 프로세스와 그 안에 있는 각 Activity를 관리한다.
-Activity 시작, 실행, 활성, 비활성화, 정지, 종료되는 일련의 상태를 순환한다.
-Activity Stack 으로 관리한다. Stack의 Activity는 넣고 빼기만 할 뿐 순서가 바뀌지는 않는다.
* 스택상의 액티비티는 다음 3가지중 하나이다.
-실행(active, running): 사용자가 직접 사용하는 상태이다. 스택의 제일 위에 있으며 화면상에 서도 역시 제일 위에 있다. 입력 포커스를 가지며 사용자의 입력을 직접 처리한다.
- 일시 정지(pause) : 포커스를 잃었지만 사용자에게는 보이는 상태이다. 위쪽에 다른 액티비티가 있지만 화면 전체를 다 가리지 않았거나 반투명한 경우가 이에 해당한다. 살아 있는 상태와 같지만 시스템에 의해 강제 종료될 수도 있다.
-정지(stopped) : 다른 액티비티에 의해 완전히 가려진 상태이며 사용자 눈에 보이지 않는다. 그러나 모든 정보를 다 유지하고 있으므로 언제든지 다시 활성화될 수 있다. 시스템은 메모리가 부족하면 정지 상태의 액티비티를 언젠든지 강제 종료할 수 있다.
* 메서드 설명
onStart(), onStop(), onDestory() 구현하는 경우가 많지 않으나, onPause() 메서드는 대부분의 경우 구현해야 한다.
시스템이 onPause() 호출된 이후를 Killable 상태라고 하며 이 때 시스템은 언제든지 액티비티를 강제로 종료할 수 있다.
강제 종료당할경우 onStop이나 onDestory가 호출되지않으므로 실질적으로 보장된 생명주기는 onPause메서드가 마지막 이다. onPause()메서드에서 중요한 정보들을 저장해야 된다.
또 시스템이 액티비티를 중지하기전에 onSaveInstanceState 메서드를 호출하여 임시적인 데이터를 저장할 기회를 제공하며 이때 Bundlle 객체에 필요한 데이터를 저장하고 , 다시 액티비티가 재시작할경우 onCreate메서드에 Bundle객체를 이용하여 onRestoreInstanceState 메서드에서 Bundle객체에서 저장한 정보를 복원하면 강제종료되지 않은것 처럼 복구가능하다.