ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [android] 안드로이드 액티비티 생명주기
    안드로이드 2020. 3. 15. 14:46

    액티비티(Activity)?

     

    안드로이드에서 액티비티(Activity)는 어플리케이션 컨포넌트입니다. 쉽게 말해 우리가 사용하는 스마트폰 어플리케이션에서 보이는 화면 하나 하나가 '액티비티'입니다. 액티비티에는 사용자 인터페이스(UI)가 들어가게 됩니다.

     

    사용자들이 앱을 사용할 때 화면 하나하나를 전환할 때 마다 액티비티는 실행, 일시중지, 중지의 상태를 가집니다.

     

    액티비티가 '실행'의 상태에 있는 경우는 스마트폰 화면 상에 액티비티가 현재 보이고 있는 상태를 의미합니다. '일시중지'의 경우, 사용자에게 액티비티가 보이긴 하지만 다른 액티비티에 포커스가 가있는 경우 입니다. '중지'의 경우 다른 액티비티가 실행하고 있어 해당 액티비티가 보이지 않는 상태 입니다.

     

    아무래도 액티비티의 상태는 사용자에게 보이는지 안보이는지에 따라 결정 되는 것 같습니다.

     

    답은 '스택(Stack)' 입니다. 스택은 특정 데이터가 메모리에 쌓이는 구조를 갖습니다. 즉 먼저 들어온 순서대로 아래에서 위로 쌓이게 되어 데이터가 빠져나갈 때는 가장 나중에 쌓여서 가장 위에 있는 데이터가 가장 먼저 빠져나가게 되는 것입니다. 액티비티는 이 스택에 열린 순서대로 쌓이게 됩니다.

     

    따라서 가장 먼저 열린 액티비티가 '실행' 상태에 있다가 어떤 동작에 의해 다른 액티비티가 열려서 화면에 다른 액티비티가 보이게 된다면 '실행' 상태에 있던 액티비는 '중지' 상태로 바뀌게 되고 열린 액티비티가 '실행' 상태로 바뀌게 됩니다. 메모리에는 먼저 열린 액티비티가 아래에 있고 그 위에는 현재 '실행' 상태에 있는 액티비티가 쌓여서 화면 상에 보이게 되는 겁니다.

     

     

    생명주기 (Life Cycle) ?

    액티비티는 메모리에 들어가서 소멸되기 까지의 '생명주기'를 가지고 있습니다.

     

    액티비티가 처음 실행되면 onCreate() 메소드가 호출됩니다. 이후에 onStart(),onResume() 메소드를 거치면 실행상태가 됩니다. 다른 액티비티가 스택에 쌓여 상위에 오게 되면 onPause()가 호출되고, onStop()이 호출되어 중지상태로 바뀝니다.

    이후, 액티비티가 소멸될 경우 onDestory()가 호출되어 액티비티가 메모리에서 사라집니다.

     

    1. onCreate()

    액티비티가 생성될 때 호출되며 사용자 인터페이스 초기화에 사용됩니다.

     

    2. onStart()

    액티비티가 사용자에게 보여지기 바로 직전에 호출됩니다.

     

    3. onResume()

    액티비티가 사용자와 상호작용하기 바로 전에 호출됩니다.

     

    액티비티 실행

     

    3-1 onRestart()

    액티비티가 멈췄다가 다시 시작되기 바로 전에 호출됩니다.

     

    4. onPause()

    다른 액티비티가 보여질 때 호출됩니다. 데이터 저장, 스레드 중지 등의 처리를 하기에 적당한 메소드입니다.

     

    5. onStop()

    액티비티가 더이상 사용자에게 보여지지 않을 때 호출됩니다. 메모리가 부족할 경우에는 onStop() 메소드가 호출되지 않을 수도 있습니다.

     

    6. onDestroy()

    액티비티가 소멸될 때 호출됩니다. finish() 메소드가 호출되거나 시스템이 메모리 확보를 위해 액티비티를 제거할 때 호출됩니다.

    댓글

Designed by Tistory.