Android Activity Life Cycle

Lazysoul
4 min readMar 30, 2016

--

Activity LifeCycle 재 정리.

기본적으로 Android Developer 에 가면 매우 자세한 내용들이 나와있다.

다른 프로그래밍 언어들을 보면 main() 메서드로부터 앱이 시작되지만 Android 시스템은 Activity 에서 특정 LifeCycle에 따라 실행이된다.

LifeCycle

시스템이 새 Activity 인스턴스를 생상하면 각각의 콜백 메서드는 액티비티 상태에 따라 호출되고 다음 단계들로 이동된다.

Activity의 복잡도와 자원 활용에 따라, 모든 LifeCycle을 다 구현할 필요는 없다. 상황에맞게 메소드를 호출하고 view, resource들을 할당, 반환을 잘 하는것이 중요하다. 그렇게 view, resource들을 언제 어느 시점에 관리하는지 정리해보자.

  1. onCreate — 시스템은 onCreate() 메서드를 호출하여 매번 Activity의 새 인스턴스를 생성한다. Activity가 최초 생성될때 한번만 호출되기 때문에 해당 Acitivity에서 할수 있는 여러가지 초기화작업들을 해야 한다. 또 savedInstanceState 라는 매개변수를 포함한다. 이 매개변수는 Activity 가 기존에 Destroy 됬지만 사용자의 정상적인 행위?(뒤로가기, Activity 종료 를 강제적으로 한 행위) 가 아닐 경우에 이전 상태값들을 전달하는 역할을 한다. 새로 생성되거나 이전에 종료가됬지만 정상적으로 종료된 경우라면 savedInstanceState의 값은 null일것이다.
  2. onStart — Activity가 정지된 상태에서 전면으로 돌아올때 호출되는 메소드이다. 최초 생성 될때에도 onCreate 이후에 호출된다. onStart에서는 혹시 Activity가 비 정상적으로 소멸됬을 경우를 대비해 리소스들을 확인하고 재 할당 등의 작업들을 하는것을 권장한다.
  3. onResume — Activitry가 새로 생성되거나 정지되었다가 다시 시작 되거나 focus를 얻을 경우에 호출된다. onCreate, onStart를 이후에 호출되는 메소드다. onStart와 비슷하지만 다이얼로그나 팝업이 떳을 경우 Activity는 사라지지 않았지만 현재 Activity위에 다이얼로그나 팝업이 focus를 갖게 되므로 focus를 잃었다가 닫히게 되면 onResume이 호출된다.
  4. onPause- onResume과 반대 개념이라고 생각하면 된다. 현재 Activity가 focus를 잃거나 소멸되거나 사라질 때 호출된다.
  5. onStop- onStart와 반대개념으로 생각하면 된다. Activity가 소멸 되거나 사라질 경우에 호출된다. 이때 Thread라던지 메모리에 관련된 resource들을 해제 시키는 것을 권장한다.
  6. onDestroy-onCrate와 반대로 Activit가 소멸될때 호출 된다.

그 외에 onRestart, onSaveInstanceState, onRestoreInstanceState가 있다.

7. onRestart-onStart가 호출될때 호출되지만 Activit가 재 호출될때만 호출이 된다. 새로생성될때는 호출이 안 된다는 말이다.

8. onSaveInstanceState- Activity가 새로 생성되지 않고 재 생성되어야 할때 data를 저장할수 있다. onDestroy 전에 호출되며 onCreate, onRestoreInstanceState에 모두 값을 전달한다.

9. onRestoreInstanceState-Activit가 재 생성됬을 경우에만 호출 된다.onSaveInstanceState에서 저장한 값을 사용 할수 있다. onStart 이후에 호출 된다.

--

--