*Activity 필수 상태 3가지
: 포그라운드, 비저블(화면이 살짝 가려지는 경우), 백그라운드
(foreground) (visible) (background)
: 앱실행 -> onCreate -> onStart -> onResume
->포그라운드
: 포그라운드 -> 전화가온다 -> 백그라운드로 전환
->onPause -> onStop
: 백그라운드 -> 전화 종료 -> onStart -> onResume
->포그라운드
: 포그라운드 -> 일부가려짐 -> 비저블 -> onPause
: 비저블 -> 가려진 부분 없어짐 -> onRsume
->포그라운드
* Activity life cycle
- onCreate : UI 자원할당만!!!!
- onStart : UI 이외의 자원할당
- onResume : 로직 스타트(ex : Thread start)
- onPause : 영구적인데이터저장,
onPause까지만 실행보장
로직 정지(ex : Thread stop)
- onStop : 실행 보장이 되지 않음
UI 이외의 자원해제,
그런데~ 자바는 객체할당(자원할당)은
가능하나 자원해제는 문법적으로 불가능
"new" 반대는 없다!
대신에 GC가 자원해제를 해줌
하지만 중요한 리소스, 관리자 엄밀하게
되어져야 하는 자원(ex : 하드웨어, I/O)은
자원해제에 관련된 메소드가 제공됨
자원해제에 관련된 메소드가 제공된다면
꼭, onStop()에서 자원해제 해줄것
##소소한 Tip##
* A / B Activity 가 존재할 경우
A 화면에서 B 화면 호출시 A 화면에 onPause()가 우선적으로 호출
(B 화면에 onCreate()가 호출되기 전에)
-> 그 이유는 메모리가 부족하거나 기타등의 이유로 B화면을 띄워야 할때
A화면에서 pause를 하기전에 죽여버리고 B를 띄울수 있기때문에 바로 Pause()를 실행함.