안드로이드 개발에 있어서 액티비티의 라이프사이클을 이해하는 것이 아주 중요하다.
모든 액티비티들은 LIFO 의 구조를 가지는 액티비티 스택에서 움직인다.
새로운 액티비티가 시작되면 현재의 화면이 이 스택의 맨 위로 올라온다.
사용자가 뒤로가기 버튼을 터치하거나 현재의 화면이 종료될 경우 바로 밑에 있는 액티비티가 위로 올라와서 활성 상태가 된다.
액티비티들은 아래의 상태에 따라서 스택에 들어갔다가 나간다.
활성(Activity) : 액티빈티가 맨 위에 있으며 화면에 보이고 포커스를 가지며 사용자의 입력을 받는다.
일시중지(Paused) : 화면에 보일수는 있지만 포커스를 가지지 않는다. 사용자의 입력 이벤트를 받지 않는다.
중지(Stopped) : 액티비티가 화면에 보이지 않을 경우 '중지' 된다. 모든 상태 및 멤버 정보를 유지한 채 메모리에 남지만 종료후보 1순위이다.
비활성(Inactivate) : 액티비티는 종료된 후와 띄워지기 전 비활성 상태로 있는다. 스택에서 제거되며, 화면에 출력되거나 사용될 수 있으려면 재시작 되어야 한다.
모든 상태 전이는 비결정적이며, 전적으로 안드로이드 메모리 관리자에 의해서 관리된다.
안드로이드는 상태 변화의 사이에 호출되는 일련의 이벤트 핸들러들을 제공한다.
액티비티의 라이프 사이클에 대한 아주 중요한 그림이다.
onCreate : 라이프 사이클 시작 시 호출된다.
액티비티를 초기화 한다.
onRestoreInstanceState : onCreate 가 종료된 후 호출되며, UI 상태 복구에 사용한다.
savedInstanceState 로 부터 UI 상태를 복수한다.
onRestart : 가시 수명으로 이어지기 전, 액티비티 처리를 위해 호출된다.
액티비티가 이미 화면에 보이고 있다고 생각하고 변경된 내용을 읽어 들인다.
onStart : 가시 수명 시작 시 호출된다.
이제 액티비티가 보이므로, 필요한 모든 UI 변경 사항을 적용한다.
onResume : 활성 수명 시작 시 호출된다.
일시 중지된 모든 UI 업데이트, 쓰레드, 액티비티에 의해 필요하지만 액티비니가 비활성화되면서 일시 중단된 처리를 재개한다.
onSaveInstanceState : 활성 수명 끝나기 직전에 UI 상태 변화를 저장하기 위해서 호출된다.
UI 상태 변화를 savedInstanceState 에 저장한다. 프로세스가 종료되거나 재시작될 경우 이 번들이 onCreate 에 전달 된다.
onPause : 활성 수명 끝에서 호출된다.
액티비티 활성 상태의 포그라운트 액티비티가 아닐 경우 업데이트 될 필요가 없는 UI 업데이트, 쓰레드, CPU 를 많이 사용하는 처리를 일시 중단한다.
onStop : 가시 수명의 끝에서 호출된다.
남아 있는 UI 업데이트, 쓰레드, 액티비티가 화면에 보이지 않을때 필요하지 않은 처리를 일시 중단한다.
이 메서드가 호출되고 난 뒤에는 프로세스가 종료될 가능성이 있으므로 바뀐 모든 내용과 상태 변화를 지속시킨다.
onDestory : 전체 수명의 끝에서 호출된다.
쓰레드를 종결하고 데이터베이스 연결을 닫는 등의 모든 리소스를 해제한다.
모든 액티비티들은 LIFO 의 구조를 가지는 액티비티 스택에서 움직인다.
새로운 액티비티가 시작되면 현재의 화면이 이 스택의 맨 위로 올라온다.
사용자가 뒤로가기 버튼을 터치하거나 현재의 화면이 종료될 경우 바로 밑에 있는 액티비티가 위로 올라와서 활성 상태가 된다.
액티비티들은 아래의 상태에 따라서 스택에 들어갔다가 나간다.
활성(Activity) : 액티빈티가 맨 위에 있으며 화면에 보이고 포커스를 가지며 사용자의 입력을 받는다.
일시중지(Paused) : 화면에 보일수는 있지만 포커스를 가지지 않는다. 사용자의 입력 이벤트를 받지 않는다.
중지(Stopped) : 액티비티가 화면에 보이지 않을 경우 '중지' 된다. 모든 상태 및 멤버 정보를 유지한 채 메모리에 남지만 종료후보 1순위이다.
비활성(Inactivate) : 액티비티는 종료된 후와 띄워지기 전 비활성 상태로 있는다. 스택에서 제거되며, 화면에 출력되거나 사용될 수 있으려면 재시작 되어야 한다.
모든 상태 전이는 비결정적이며, 전적으로 안드로이드 메모리 관리자에 의해서 관리된다.
안드로이드는 상태 변화의 사이에 호출되는 일련의 이벤트 핸들러들을 제공한다.
액티비티의 라이프 사이클에 대한 아주 중요한 그림이다.
전체수명 : 액티비티의 전체 수명.
가시수명 : 액티비티가 포커스를 가지지 않고 또 부분적으로 가려질지라도 화면에 보이는 단계.
활성수명 : 액티비티가 포그라운드에 있으며 사용자의 입력 이벤트를 받는다.
가시수명 : 액티비티가 포커스를 가지지 않고 또 부분적으로 가려질지라도 화면에 보이는 단계.
활성수명 : 액티비티가 포그라운드에 있으며 사용자의 입력 이벤트를 받는다.
onCreate : 라이프 사이클 시작 시 호출된다.
액티비티를 초기화 한다.
onRestoreInstanceState : onCreate 가 종료된 후 호출되며, UI 상태 복구에 사용한다.
savedInstanceState 로 부터 UI 상태를 복수한다.
onRestart : 가시 수명으로 이어지기 전, 액티비티 처리를 위해 호출된다.
액티비티가 이미 화면에 보이고 있다고 생각하고 변경된 내용을 읽어 들인다.
onStart : 가시 수명 시작 시 호출된다.
이제 액티비티가 보이므로, 필요한 모든 UI 변경 사항을 적용한다.
onResume : 활성 수명 시작 시 호출된다.
일시 중지된 모든 UI 업데이트, 쓰레드, 액티비티에 의해 필요하지만 액티비니가 비활성화되면서 일시 중단된 처리를 재개한다.
onSaveInstanceState : 활성 수명 끝나기 직전에 UI 상태 변화를 저장하기 위해서 호출된다.
UI 상태 변화를 savedInstanceState 에 저장한다. 프로세스가 종료되거나 재시작될 경우 이 번들이 onCreate 에 전달 된다.
onPause : 활성 수명 끝에서 호출된다.
액티비티 활성 상태의 포그라운트 액티비티가 아닐 경우 업데이트 될 필요가 없는 UI 업데이트, 쓰레드, CPU 를 많이 사용하는 처리를 일시 중단한다.
onStop : 가시 수명의 끝에서 호출된다.
남아 있는 UI 업데이트, 쓰레드, 액티비티가 화면에 보이지 않을때 필요하지 않은 처리를 일시 중단한다.
이 메서드가 호출되고 난 뒤에는 프로세스가 종료될 가능성이 있으므로 바뀐 모든 내용과 상태 변화를 지속시킨다.
onDestory : 전체 수명의 끝에서 호출된다.
쓰레드를 종결하고 데이터베이스 연결을 닫는 등의 모든 리소스를 해제한다.
'Development > Android' 카테고리의 다른 글
Android Life Cycle 다른 그림. (0) | 2010.08.03 |
---|---|
Widget 에서 onReceive 과 onUpdate 메소드의 차이. (0) | 2010.07.30 |
리스트 출력하고 그 중에서 원하는 하나의 정보를 가져오기. (0) | 2010.07.22 |
Android 에서 Thread 생성하고 사용하기. (0) | 2010.07.21 |
서버에서 이미지 로딩하기. (0) | 2010.07.20 |