이 개념은 그냥 알아두고 넘어가는 개념이지만, 내가 주워들었던 여러 동영상 강의 및 책에서 중요하게 생각하더라.

바로, 액티비티의 생명주기인데, 생명주기란 말 뜻은 우리가 일반적으로 알고 있는 말 그대로다.

사람이 태어나면서 죽을때까지를 생명주기라고 하는 것처럼, 우리가 생성한 액티비티(앱의 화면) 또한 생성점(시작점)부터 파기까지 일련(또는 회귀되는)의 생명주기를 가지고 있다.

조잡한 pptx로 그림을 그려보았으니 함께 보자 병아리들!

액티비티의 생명주기, life cycle of an activity

사진으로 저장하기 쉽도록 한 페이지에 그림을 그려보았다. 개념 자체를 무조건 외운다기보다는 알고 있으면 좋으니, 우리 모두 그림을 다운로드하기로 하자.

우선 onCreate()라는 건 액티비티가 처음 생성될 때 불러지는 메서드인데, 생성되는 상태(state)를 뜻하기도 한단다. 우리가 만들었던 HelloWorld 프로젝트를 자세히 보면, onCreate()는 기본적으로 만들어 준다. (액티비티 일단 생성은 시켜야 실행을 할 것 아닌가?)

그다음 액티비티의 상태가 사용자가에 가시적이게 되면 onStart() 상태로 넘어간다. 그 뒤 사용자와 상호작용(interactive)하게 되면 또는 상호작용할 준비가 되면, onResume() 상태로 넘어가게 된다. 그 뒤의 메서드도 각 액티비티의 상태에 따라 불러오게(called) 된다.

Helloworld를 AVD 또는 실제 디바이스를 연결하여 실행시킬 때, 현재 나의 액티비티가 어떤 상태인지 보고자 한다면, 안드로이드 스튜디오에서 만들어준 기본적으로 만들어준 MainActivity.java를 다음과 같이 수정하자

package com.example.activity101;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log; //추가

public class MainActivity extends AppCompatActivity {

    String tag = "Lifecycle Step"; //추가
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(tag, "In the onCreate() event"); //추가
    }
/* 아래부터 다 추가 */
    public void onStart() {
        super.onStart();
        Log.d(tag, "In the onStart() event");
    }

    public void onRestart() {
        super.onRestart();
        Log.d(tag, "In the onRestart() event");
    }

    public void onResume() {
        super.onResume();
        Log.d(tag, "In the onResume() event");
    }

    public void onPause() {
        super.onPause();
        Log.d(tag, "In the onPause() event");
    }

    public void onStop() {
        super.onStop();
        Log.d(tag, "In the onStop() event");
    }

    public void onDestroy() {
        super.onDestroy();
        Log.d(tag, "In the onDestroy() event");
    }
}

 그 뒤, Shift+F9 또는 디버그 모드로 실행 시킨다면, Debug 창에 사용자가 어플을 실행하고, 홈키를 눌러 내리고 할 때마다 각 액티비티의 상태가 어떻게 변하는지 알 수 있다.

모바일의 홈 버튼 백 버튼을 여러가지 누르다보면 한가지를 발견할 수 있는데, 앱이 onDestroy() 될 때는 바로 Back Button을 누를 때 라는 것이다. 홈 버튼을 누르면 잠시 활동을 정지하고 앱이 휴게상태가 되지만, 백 버튼은 앱에 할당된 resources (자원)을 뺏고, 앱을 완전히 종료시키는 시점이다. 이 부분이 매우 중요하단다.

다른 개발자들이 액티비티의 생명주기를 중요시 하는 이유는 현재 나로서는 크게 와 닿지는 않는 부분이지만, 내 얕은 지식으로 미루어 보자면, 현재 우리는 헬로 월드 딸랑 하나 보여주는 화면을 실행하지만, 인텐트 등을 사용하여 다른 앱이나 다른 액티비티들이랑 연계 활동이 많아지는 복잡한 앱이 될수록, 각 앱의 상태를 잘 이해해야 되기 때문일까?

어쨌거나 계속 알아보며 공부해보자.

 

Posted by 공급망관리 최선생
,