본문으로 바로가기

안드로이드 라이프사이클(life cycle)

category 카테고리 없음 2017. 11. 10. 23:37


*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()를 실행함.