티스토리 뷰
안드로이드의 Activity 생명주기에 대해서 알아보겠습니다. 영어로 표현하면 Activity Life Cycle로서 문자 그대로 Activity의 생명 즉, 살아있나 죽어있나 조금 살아있나?에 대한 내용입니다. 그렇다면 이 Activity라는 것은 무엇일까요??
우선 우리가 화면에서 볼 수 있는 Button 이나 TextView의 코드를 간단히 윗 부분만 살펴보겠습니다.
1 2 3 4 5 6 | @RemoteView public class Button extends TextView { public Button(Context context) { super((Context)null, (AttributeSet)null, 0, 0); throw new RuntimeException("Stub!"); } | cs |
1 2 3 4 5 6 7 8 9 | @RemoteView public class TextView extends View implements OnPreDrawListener { public static final int AUTO_SIZE_TEXT_TYPE_NONE = 0; public static final int AUTO_SIZE_TEXT_TYPE_UNIFORM = 1; public TextView(Context context) { super((Context)null, (AttributeSet)null, 0, 0); throw new RuntimeException("Stub!"); } | cs |
Button은 TextView를 상속하고있고, TextView는 View를 상속하고 있는것을 볼 수 있습니다. 따라서 우리가 화면에서 보는 것들이 View라고 생각할 수 있습니다. Activity는 이러한 View를 놓을 수 있는 또는 그릴 수 있는 틀 즉, Canvase 라고 생각하시면 됩니다.
Activity가 이제 대략 무엇인지 알게되었습니다. 그럼 한 번쯤은 들어봤을 Activity LifeCycle 한국말로 액티비티 생명주기가 왜 중요한 것일까요?? 그냥 Activity 딱! 나타내고, 딱! 없애면 될것을 왜 생명주기라고 만들어놨을까요? 그건 바로 다양한 상황에 대해서 대응하기 위해서 입니다. 여기서 다양한 상황이라함은 만약 Application을 사용중 전화가 오면 어떻게 될까요? 딱! 나타내고, 딱! 없애는 것만 할 수 있다면 전화가오면 사용자의 앱은 딱! 없어지고 전화 앱이 딱! 나타나질 것입니다. 그렇다면 전화가 끊기면 어떻게 될까요? 없어져있는 앱을 다시 불러올 수는 없을 것입니다. 또 다른 예로 다른 Activity로 이동했는데 이전 Activity가 없어져있다면 재생성해서 불러오는것 말고는 방법이 없을 것입니다.
안드로이드 OS의 역활 중 하나는 시스템을 효율적으로 관리하는 것입니다. 시스템을 효율적으로 관리하기 위해서는 앞서 알아보았던 다양한 상황에 대해서도 효율적으로 관리할 수 있어야하므로, 아래와 같은 Activity 생명주기를 만듬으로서 시스템 자원 관리를 좀 더 효율적으로 할 수 있게되었습니다.
(
대표적으로 다음과 같은 상황을 위해서 만들어 졌습니다.
1. 사용도중 다른 Application으로 전활 될 경우 충돌 방지
2. 사용자가 Application을 나갔다가 돌아왔을 경우 진행 상태 손실 방지
3. Application을 잘 사용하지 않을 경우 리소스 낭비 방지
)
우선 구글에서 제공하는 안드로이드 Activity 생명주기는 다음과 같이 그림으로 표현됩니다.
하나 씩 살펴보도록 하겠습니다.
onCreate()
Activity가 생성 될 때 한 번 만 실행이 됩니다.(Activity에 View를 그리기위해서 준비하는 단계로 생각하면 좋을 것 같습니다.) onCreate()가 끝나면 onStart()를 호출합니다.
onStart()
View가 보이기 전에 호출이 됩니다.(Activity에 View를 보여주기 전에 그리는 단계로 생각하면 좋을 것 같습니다.) 다음으로 onResume()을 호출합니다.
onResume()
View가 보이고 나서 호출이 됩니다. 즉, 유저와 Activity가 서로 영향을 줄 수있는 단계로서 App이 가동되고있는 단계입니다.(Activity에 그려진 View를 보여주고 사용자와 소통하는 단계로 생각하면 좋을 것 같습니다.)
onPause()
Activity가 절반이 가려질경우 호출이 됩니다.
onStop()
Activity가 다른 App에 의해 완전히 가려진 경우 또는 완전히 Activity가 종료된 경우 호출이 됩니다. Activity가 다시 보여질 경우 onRestart()가 호출되고 그 후 onCreate()가 아닌 onStart() -> onResume()의 단계로 실행하게 됩니다. 앱이 완전이 종료될 경우 onDestory() 가 호출됩니다.
여기서 위의 여러가지 상황을 대입해보겠습니다. 사용자가 앱을 사용하던 중 다른 앱이 실행되었을 경우(ex 전화앱) Activity가 완전히 가려졌으므로 onStop() 까지 호출 될 것입니다. 그 후 다시 사용자가 앱으로 돌아왔을 경우, onCreate()가 아닌 onStart()부터 시작함으로서 시스템 자원의 낭비를 줄일 수 있게됩니다.
간단하게 Activity의 생명주기에 대해서 알아보았습니다.
'안드로이드' 카테고리의 다른 글
[안드로이드] 주차 위치 앱(주차 위치) (2) | 2021.12.06 |
---|---|
[안드로이드] 백 버튼 이벤트 예제(with RxJava) (0) | 2018.07.18 |
[안드로이드] Java와 Kotlin의 간단한 비교 (1) | 2018.07.07 |
[안드로이드] WebView를 이용한 간단한 Javascript 통신 (0) | 2018.07.04 |
[안드로이드] MQTT를 이용한 채팅서비스 만들기(3) (16) | 2018.05.02 |
- Total
- Today
- Yesterday