안드로이드 생명주기

extends Activity

  • onCreate()

엑티비티가 처음 생성될 때 호출된다. 뷰를 만들고 지속적으로 필요한 데이터 파일을 여는 등 일반적으로 액티비티 초기화를 하는 메소드다. onCreate를 호출할 때 안드로이드는 과거에 실행했던 액티비티의 상태를 저장하고 있는 Bundle이라는 오브젝트를 받는다.

  • onStart()

액티비티가 화면에 보이기 직전에 호출된다. onStart가 종료했을 때 액티비티가 화면 포어그라운드에서  실행될 수 있다면 onResume가 호출된다. 간혹 포어그라운드 실행이 불가능하다면 onStop메소드가 호출된다.

  • onResume()

액티비티가 포어그라운드에서 실행되면 onStart 바로 직후에 onResume메소드가 호출된다. 이 시점에서부터 액티비티는 사용자의 입력을 받을 수 있는 상태로 실행된다. 키보드와 터치를 통한 사용자 입력을 받으며 사용자 인터페이스가 화면에 보이게 된다. 다른 액티비티가 실행되면 화면에서 사라졌다가 해당 액티비티가 종료돼 원래의 액티비티가 다시 포어그라운드로 돌아올 때도 onResume이 호출된다. onResume에서 액티비티가 사용자 인터페이스를 업데이트할 때 필요한 작업을 시작하거나 재개하게 된다. 사용자 인터페이스 업데이트 예로 위치 정보 업데이트 또는 애니메이션 보이기 등을 들 수 있다.

  • onPause()

안드로이드가 다른 액티비티를 재실행해서 포어그라운드로 띄우려는 순간 기존 액티비티에게 onPause메소드가 호출된다. 이 순간에는 원래 실행하던 액티비티는 화면에 보이지 않으므로 배터리를 소모하거나 CPU를 불필요하게 사용하는 작업을 멈춰야 한다. 예를 들어, 애니메이션을 보여주고 있다면 onPause 이후에는 어차피 아무도 못 보기 때문에 이 작업을 멈췄다가 나중에 화면을 다시 돌려받을 때 재개하는 편이 낫다. 이 메소드에서는 나중에 포어그라운드로 복귀할 때를 대비해 액티비티의 상태를 저장해두면 좋다. 그러나 액티비티가 다시 포어그라운드로 복귀한다는보장은 없다. 만일 메모리가 부족하고 디스크에 가상 메모리를 확장할 공간도 없다면 메모리가 필요한 시스템 프로세스를 위해 액티비티를 희생해야 할 수도 있다. 이 메소드를 실행하고 나간 액티비티는 다시 실행되지 않고 안드로이드를 제거할 수도 있다.

  • onStop()

액티비티가 화면에 보이지 않을 때 호출된다. 화면에 보이지 않는 이유는 액티비티가 제거됐거나 다른 액티비티에 의해 포어그라운드를 빼앗겼을 때, 둘 중 하나다.

  • onDestory()

액티비티가 완전히 제거되지 전에 마지막으로 처리할 기회를 제공하는 메소드다. 정상적인 경우에는 액티비티가 제대로 종료해서 안드로이드가 그 액티비티의 finish메소드를 호출했을 때 onDestory로 들어온다. 하지만 앞에서 언급했듯이 자원이 부족할 때 안드로이드가 그 자원들을 회수하기 위해 액티비티를 제거하려고 호출할 때도 있다.

댓글

이 블로그의 인기 게시물

javascript ===, ==, >=, <=연산자

SQL oracle 내장함수[문자열 처리]

java 입출력2