본문 바로가기

Android

액티비티(Activity)

728x90
반응형

지난 포스팅에서 안드로이드 어플리케이션을 구성하는 4대 컴포넌트에 대해서 살짝 알아보았는데요. 역시 중요한 녀석들이기 때문에 살짝 맛만 본 것으로는 부족한 것 같아 각 컴포넌트를 조금은 더 자세히 알아보도록 할께요.


여기서는 바로 액티비티에 대해서 알아보도록 하겠습니다.


  • UI를 구성하는 기본단위입니다. 한 화면을 보여주는 역할을 합니다.
  • 자체적으로 화면에 출력하는 기능이 없어서 뷰나 뷰그룹을 사용하여 화면에 출력시킵니다.
  • 다양한 컨트롤들을 활용하여 뷰와 뷰그룹에 배치시키고 그것을 출력시키고 사용자가 일으키는 이벤트를 처리 합니다.
  • 사용자에게 보여지는 화면이 있는 어플리케이션이라면 그것은 액티비티를 한개 이상 가지고 있는 것입니다.(액티비티가 없으면 화면에 출력을 안하니 당연한거네요)
  • 액티비티의 생명주기는 3가지 상태로 나눠집니다. - 활성화 또는 실행중인 상태, 멈춤 상태, 정지 상태
  • AndroidManifest.xml에 액티비티를 지정해둬야 합니다. 혹시 지정해두지 않는다면 해당 액티비티로 이동하는 순간, 넉다운되는 어플리케이션의 최후를 볼 수 있을 것입니다 ^^;;

그럼 액티비티의 생명주기에 대해서 살짝 더 알아보겠습니다.
활성화(Active) 또는 실핼중인(Running) 상태
  • 액티비티가 포그라운드(foreground)에서 실행되고 있는 상태
  • 액티비티의 GUI(Graphical user interface) 화면을 사용자가 사용하고 있는 상태 또는 포커스를 가지고 있는 상태

멈춤(pause) 상태
  • 액티비티가 다른 액티비티에 가렸지만 가린 액티비티가 투명이거나 일부가 가렸고 포커스를 잃은 상태
  • 이 상태에서는 우선 모든 정보를 유지하고 있다.
  • 프레임워크의 윈도우매니저에 붙어서 존속을 한다.
  • 메모리 부족 현상이 있을시에는 시스템에 의해 강제 종료가 된다.

정지(Stop) 상태
  • 완벽하게 다른 액티비티에 가려진 상태
  • 모든 상태와 정보는 멈춤 상태와 같이 유지가 된다.
  • 메모리 부족시 강제 종료 된다.


그냥 봐서는 멈춤 상태와 정지 상태 별로 다른 것 같지 않네요. 완벽하게 가려서 안보이는 액티비티와 포커스만 잃은 액티비티의 상태 차이 정확하게 저는 모르겠네요. 어짜피 메모리 부족하면 다 죽여버리는데. 이건 좀 더 알아봐야될 것 같습니다. ㅎㅎㅎ 
뭐 타 문서들을 보면 메모리 부족시 Kill해버리는 순서가 정지상태의 액티비티를 먼저 한다고는 합니다. ㅎㅎㅎ

그리고 상태 변화에 따라서 호출되는 메서드들이 있습니다. 우선 아래 그림을 보시고 그 다음 설명을 하도록 할께요.



그럼 위 그림에 나오는 메소드들을 확인해 보도록 하겠습니다.

- onCreate()
티비티가 처음 생성될 때와 화면이 회전되어 변경될 때 기본으로 실행 되는 메소드 입니다. 레이아웃배치와 변수 선언등 초기 작업이 진행 되는 메소드 입니다. 위에서 보는 것과 같이 메소드 처리 완료 후 onStart() 메소드를 호출합니다.

onStart()
onCreate()나 onRestart() 메소드로 시작된 후 처음으로 호출되는 단계입니다. 화면 생성이 완료되고 사용자 입력을 받기 직전의 단게입니다. 이 단계가 완료 후에는 onResume() 메소드가 실행됩니다.

onResume()
이 메소드가 실행되고 나면 액티비티의 모든 준비가 완료된 상태입니다. 사용자와 상호작용이 가능해 지죠. 또한 onPause()상태에서 돌아왔을때 처음 시작되는 메소드 이기도 합니다.

onPause()
이 메소드는 다른 액티비티에 포커스를 넘겨주고 백그라운드로 넘어 갔을 때 실행되는 메소드 입니다. 생명주기 중 멈춤상태에 해당됩니다. 혹시 다시 액티비티가 포커스를 받게 되면 onResume()이 실행 되게 됩니다.

onStop()
해당 액티비티가 완전히 포커스를 잃고 화면에 보이지 않을 때 실행되는 메소드 입니다. 혹시 다시 액티비티가 실행될 때는 onRestart() -> onStart() -> onResume() 순으로 호출이 되어집니다.

onDestroy()
finish(), finishActivity() 같은 정상적인 종료시에 호출이 됩니다. 이때 onCreate에서 호출한 자원들을 반납을 하게 됩니다.

onRestart()
onStop() 상태에서 액티비티가 다시 활성화 되어질 때 호출되는 메소드입니다.


액티비티의 기본적인 내용과 생명주기에 대해서 대충 알아보았습니다. 뭐 자세한 설명은 아니라서 100% 알기도 힘들뿐 아니라 액티비티라는 것 자체가 너무나 방대한 내용을 가지고 있기 때문에 다 알아보기 힘들더군요. 우선은 이런 기본적인 것 부터 하나하나 챙겨 공부하면 나중에는 좀 더 많은 내용을 자동적으로 알 수 있지 않을까 생각을 조심스레 해봅니다.

그럼 이 포스팅은 여기까지인 걸로~^ㅡ^

p.s 어찌 뒤로 갈수록 내용이 빈약해지는 듯 하네요 ㅠㅠ


728x90
반응형