main() 메소드를 가지고 시작하는 다른 프로그래밍의 페러다임과는 다르게, 안드로이드 시스템은 액티비티의 생명주기(lifecycle)의 특정 상황에 대응하는 특정 콜백메소드(callback method)를 발동함으로서 액티비티 인스턴스(instance)안의 코드를 초기화 합니다. 액티비티가 시작할 때 호출되는 순차적인 콜백 메소드들과 액티비티가 파괴될 때 호출되는 순차적인 콜백 메소드들이 있습니다.
이번 시간에는 가장 중요한 라이프사이클(lifecycle) 메소드들의 개요를 제공할 것입니다. 그리고 여러분에게 새로 액티비티의 인스턴스(instance)가 만들어질 때 처음 호출하는 콜백을 제어하는 방법을 보여드리겠습니다.
생명주기(라이프사이클 : Lifecycle) 콜백(callback)들 이해하기
---------------------------------------------------------
하나의 액티비티가 살아있는 동안, 시스템은 피라미드(Pyramid)의 단계와 흡사한 순서로 생명주기(lifecycle) 메소드들의 주요 세트(Set)를 호출합니다. 그렇다, 액티비티(Activity) 생명주기(Lifecycle)의 각 상태는 피라미드(Pyramid)의 구분된 단계와 같다. 시스템이 새로운 액티비티의 인스턴스(instance)를 만듦으로서, 각 콜백(callback) 메소드는 액티비티를 가장 윗 단계를 향해 한단계 씩 이동시킵니다. 피라미드의 가장 위(Top)는 액티비티가 화면의 전면(foreground)에서 실행중이고 사용자(user)와 상호작용(interaction)을 할 수 있다는 것을 가리킵니다.
사용자(user)가 액티비티를 떠나기 시작하면, 시스템은 액티비티를 파괴하기 위해 피라미드(Pyramid)의 아래쪽을 향해 단계를 이동시키는 또 다른 메소드들을 호출합니다. 몇몇의 경우, 액티비티는 피라미드의 아래 일 부분으로 이동하여 기다릴 수 도 있고( 다른 앱으로 전환될 때와 같이), 이 지점에서 다시 피라미드의 상단(Top)을 향해 단계를 이동해서(만약 사용자가 다시 액티비티로 돌아온다면) 사용자가 중단 된 지점부터 다시 시작할 수 도 있습니다.
그림 1. 피라미드(Pyramid)의 단계로 표현된, 액티비티 생명주기(Activity Lifecycle)에 대한 간략한 그림. 이 그림은 가장 위에있는Resumed 을 향한 단계에서 액티비티가 가진 모든 콜백(callback)들과 아래로 향하는 단계에서의 콜백들(callback)의 사용 방법을 보여줍니다. 액티비티는 Paused 와 Stopped 상황에서도 역시 Resumed 로 돌아갈 수 있습니다.
여러분 액티비티의 복잡도에 따라, 여러분은 모든 생명주기(Lifecycle) 메소들들을 구현할 필요는 없습니다.
어쨋든, 사용자가 기대한 대로 여러분의 앱이 동작하는 것을 보장하기 위해서는 이 메소드들을 이해하는 것이 매우 중요합니다. 여러분의 액티비티 생명주기(Lifecycle) 메소드들을 구현하는 것은 다양한 방법으로 동작되는 여러분의 앱이 적절하게 동작되는 것을 보장합니다.
이런 것들을 포함합니다.:
° 앱을 사용하는 동안 사용자가 전화를 수신하거나 다른 앱으로 전환하는 경우 충돌 하지 않습니다.
° 사용자가 액티비티를 사용하지 않을 때 시스템 자원들의 값을 없애지 않습니다.
° 사용자가 앱을 떠났다가 나중에 다시 돌아왔을때, 사용자의 진행순서를 잃어버리지 않습니다.
° 화면의 방향이 가로(landscape)와 세로(portrait) 사이에서 회전할 때 사용자의 진행 상황을 잃어버리거나 충돌하지 않습니다.
수업을 따라하다 보면, 그림 1의 그림과 같이 서로 다른 상태 사이에서 액티비티의 상태를 전환하는 여러가지 상황이 있다는 것을 배우게 될 것입니다. 어쨋든, 이러한 상태들 중 3개는 고정될 수 있습니다. 즉, 액티비티는 이 3가지 상태중 하나에서 장시간 동안 존재할 수 있습니다.
Resumed
이 상태에서, 액티비티는 화면의 전면(foreground)에 있고 사용자(user)와 상호작용(interaction)을 할 수 있습니다.( 때로는 "실행중(running)"상태라고도 합니다.)
Paused
이 상태에서, 액티비티는 다른 액티비티( 반 투명하거나 화면전체를 사용하지 않는 액티비티)에 의해 부분적으로 가려져 있습니다. 일시정지(Paused)된 액티비티는 사용자 입력을 받을 수 없으며 어떤 코드도 실행 할 수 없습니다.
Stopped
이 상태에서, 액티비티는 완전하게 숨겨져서 사용자에게 보이지 않습니다.( 이 상태는 백그라운드(background)에 있는 것으로 간주됩니다.) 정지(Stopped)되어 있는 동안, 액티비티 인스턴스(instance)와 멤버변수(variable)과 같은 모든 상태정보들은 남아있습니다. 하지만 역시 어떤 코드도 실행 할 수 없습니다.
다른 상태들은(Created 와 Started) 일시적으로 존재하며 시스템이 다음 생명주기(Lifecycle) 콜백(callback)메소드를 호출함으로서 빠르게 다음 단계로 전환합니다. 즉, 시스템은 onCreate()를 호출한 후, 빠르게 onStart(), 또 빠르게 onResumed()에 도착하도록 합니다.
이것이 기본적인 액티비티 생명주기(Activity Lifecycle) 입니다. 이제 특정 라이프사이클 동작의 몇가지를 학습하도록 하겠습니다.
'Android 개발자사이트 튜토리얼' 카테고리의 다른 글
액티비티 일시정지하기와 이어하기(Pausing and Resuming an Activity) (0) | 2015.03.27 |
---|---|
Activity 시작하기(Starting) 2 (0) | 2015.03.27 |
액티비티 생명주기 관리하기(Managing the Activity Lifecycle) (0) | 2015.03.27 |
다른 플랫폼 버전들 지원하기(Supporting Difference Platform Versions) (0) | 2015.03.27 |
다른 크기, 해상도, 밀도의 화면들 지원하기(Supporting Difference Screens) (0) | 2015.03.27 |