스택 (Stack)
Activity는 기본적으로 3가지의 상태로 존재한다.
Paused, Stopped 는 메모리가 부족할 경우 시스템이 중단시킬 수 있고, 이 경우 다시 열리제 되면 처음부터 다시 생성하게 된다.
Activity는 생성 후 메모리에 들어가서 소멸될 때 까지 '생명주기'를 갖고 있음
생명주기는 7가지로 구분됨
위 처럼 새로운 액티비티를 호출하면 순서대로 호출될 거라 생각했지만,
실제로 작동을 해보니 서브 액티비티의 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() 메소드가 호출되거나, 시스템 메모리 확보를 위해 호출된다.