Activity

똘이주인·2021년 7월 12일
0
  • 액티비티(Activity)는 안드로이드 4대 컴포넌트 중 하나
  • UI (사용자 인터페이스)와 가장 밀접한 관련을 갖고 있기 때문에 가장 기본이 되는 구성요소
  • 보통 App은 필수로 하나 이상의 Activity가 서로 연결된 형태로 구성
  • 액티비티(Activity)는 크게 3가지의 상태가 존재
    1. 실행 : 화면(UI) 상에 액티비티가 보여지고 있는 상태
    2. 일시정지 : 액티비티가 일부분 보이긴 하지만 다른 액티비티가 포커스를 가져간 상태
    3. 중지 : 다른 액티비티에 의해서 전부 가려진 상태 (보이지 않는 상태)

스택 (Stack)

  • 액티비티 관리방법으로, 스택은 데이터가 메모리에 쌓이는 구조로 표현
  • LIFO (Last In First Out)
    • 후입선출 구조 : 가장 나중에 들어온 자료가 가장 먼저 나가는 방식

Activity Lifecycle 의 이해

Activity는 기본적으로 3가지의 상태로 존재한다.

Paused, Stopped 는 메모리가 부족할 경우 시스템이 중단시킬 수 있고, 이 경우 다시 열리제 되면 처음부터 다시 생성하게 된다.

생명주기

Activity는 생성 후 메모리에 들어가서 소멸될 때 까지 '생명주기'를 갖고 있음

생명주기는 7가지로 구분됨

LifeCycle 호출 순서

  • 위 처럼 새로운 액티비티를 호출하면 순서대로 호출될 거라 생각했지만,

  • 실제로 작동을 해보니 서브 액티비티의 onCreate() 이전에 기존의 onPause()가 먼저 호출된다

    1. onCreate()
        Activity가 처음 만들어질 때 호출되는 함수이면서, 어플리케이션이 처음 시작할 때 최초로 한번 실행되는 함수이다. 주로 view를 만들거나 view resource bind , data to list 등을 onCreate()에서 담당하며, 이전 상태의 정보를 담고있는 Bundle을 제공
        
    2. onStart()
        Activity가 다시 시작되기 전에 호출, Actvitiy가 멈춘 후 호출되는 함수, Activity가 사용자에게 보여지기 직전에 호출되는 함수
    
    3. onResume()
        Activity가 비로소 화면에 보여지는 단계, 사용자에게 Focus를 잡은 상태
    
    3 - 1. onRestart()
      Activity가 멈춰있다가 다시 호출될 때 불리는 함수, 즉 Stopped상태였을 때 다시 호출되어 시작될 때 불린다.
    
    ----------- 다른 Activity가 호출 되는 경우 -----------
    
    4**. onPause()**
    ****Activity위에 다른 Activity가 올라와서 **focus를 잃었을 때 호출**되는 함수.
    **완전 Activity가 가려지지 않은 상태**에서 호출되는 함수.
    즉 일부분이 보이거나 투명상태일 경우 호출된다.
    **다른 Activity가 호출되기 전에 실행되기 때문에 onPause()함수에서 시간이 많이 소요되는 작업이나, 많은 일을 처리하면, 다른 Activity가 호출되는 시간이 지연되기 때문에 많은 일을 처리하지 않도록 주의!** **영구적인 data는 여기서 저장한다.**
    
    **5. onStop()**
    A화면(Activity)위에 다른 B화면(Activity)가 완전히 올라와 **화면에서 100% 가려질 때 호출**되는 함수. 
    홈키를 누르는 경우. 또는 다른 액티비티페이지 이동이 있는 경우. 만약 이상태에서 Activity가 다시 불려지면, onRestart()함수가 호출된다.
    
    **6. onDestroy()**
    **Activity가 완전히 스택에서 없어질 때 호출되는 함수**, 즉 제거되는 경우.
    finish() 메소드가 호출되거나, 시스템 메모리 확보를 위해 호출된다.

0개의 댓글