안드로이드는 코드를 주~욱 작성해서 순차적으로 해석해서 띄우는 시스템이 아니라 화면에 나타내는 여러가지 요소들을 계층적요소로 나누어
이 요소들이 특정 상황에 동작 할 수 있도록 역할이 분배되어 있는 시스템입니다.

이 요소 중의 하나가 액티비티 인데 화면에 보이지는 않지만 앱이 구동되고 실행되며 정지되고 소멸될 때까지의 프레임을 담당하는 요소라고
할 수 있습니다. 이클립스에서는 xxxxx.java 파일에서 생성자 클래스가 액티비티를 상속받았다면 이것이 액티비티가 되는 것이죠.

액티비티의 생명주기를 알아야 하는 이유는 앱을 가동시켜면 앱의 특성에 따라서 구동, 실행, 종료 등의 특정한 상황에서 필요한 작업이 있기마련
인데 이런 구체적인 액티비티의 상황에 따라 특정 콜백 함수가 동작됨으로서 앱이 필요로 하는 작업을 수행할 수 있기 때문입니다.
어떻게 보면 이런 구조를 이해하는  것이 안드로이드 동작원리를 이해하는 것과 마찬가지 입니다.
보통은 자기 자신만이 동작코드를 가지고 자신의 테두리 안에서만 끝나는 작업이 거의 없기 때문이죠.

우선 안드로이드 생명주기 다이어그램을 살펴봅시다.


다이어그램을 보니 한 눈에 생명주기가 눈에 들어 오는 군요.

음.. 너무 자세한 설명은 다음을 기약하기로 하고

지금은 간단히 코드상에서 어떤 식으로 작성하는지 간단히 살펴 봅시다


public class Activity extends ApplicationContext {
     protected void onCreate(Bundle savedInstanceState);
		super.onCreate(savedInstanceState);

     protected void onStart();
		super.onStart();
		
     protected void onRestart();
		super.onRestart();
		
     protected void onResume();
		super.onResume();
		
     protected void onPause();
		super.onPause();
		
     protected void onStop();
		super.onStop();
		
     protected void onDestroy();
		super.onDestroy();
 }

2월 18일에 재수정 들어갑니다.

각 시점에서 호출되는 콜백함수에 대해서 알아봅시다.

  • onCreate : 액티비티가 초기화되면서 생성될때 콜백되는 함수입니다. 중지했다가 재시작 할 때는 이 함수의 매개변수인 Bundle 을 통해서 중지하기 전의 상태가 전달됩니다. 이를 이용해서 화면의 마지막 상태를 저장했다가 앱재시작시에도 이전의 작업이 날아가지 않게 됩니다.

  • onRestart : 어플이 재시작 될 때 호출되는 콜백함수입니다. 액티비티가 foreground(화면전면)에 다시나오는 때에 호출되는 함수입니다. 아직 이 콜백함수를 특별히 활용해 본 적은 없네요.

  • onStart : 액티비티가 유저에게 나타나기 바로 직전에 호출되는 함수 입니다. 블루투스를 이용한 앱개발시에 검색된 기기를 추가하는데에 사용했었던 콜백함수입니다. 보통 onCreate에서 마찰이 일어나거나 미처 하지 못한 작업을 이 콜백함수를 통해서 마무리 할 수 있습니다.

  • onPause : 화면상의 액티비티외에 다른 액티비티가 실행되는 때에 호출되는 함수입니다. 액티비티의 사실상의 생명주기 마지막에 해당되며 액티비티가 사용자와 대면하게 되는 마지막에 호출되는 함수입니다.

  • onStop : 액티비티가 사용자에게 보이지 않게 될 때 호출되는 함수입니다.

  • onDestroy : 액티비티가 파괴(Destory) 될 때 호출되는 함수입니다. 이 함수를 이용해서 블루투스의 기능을 완전히 차단 시키고 종료합니다.


이와같이 특정한 시점에서 특정한 기능들을 내포 할 수 있는데 화면상에 일어나는 액티비티의 여러활동을 제어 할 수 있도록 만든 함수들입니다.
이런 함수를 통해서 안드로이드 앱을 자유자재로 구사/제어 할 수 있어야 하겠습니다.
저작자 표시 비영리 동일 조건 변경 허락
신고