컴퓨터공부/Android

Android activity / fragment life cycle(계속 업데이트)

achivenKakao 2019. 4. 24. 01:16

 A simplified illustration of the activity lifecycle.

 

 

많이 봐오던 안드로이드 라이프 사이클이다.

  1. onPause()는 현재 상태에서 팝업이 뜰 경우 발생할 수 있다.
  2. onStop()는 홈버튼을 눌렀을 때 발생한다.
  3. recent키를 통해서 앱을 선택하게 되면 onRestart() 상태가 된다.
  4. onDestory()는 recent에서 앱을 닫았을 때 발생한다.
  5. App process killed는 시스템에서 메모리가 부족할 때 언제나 발생할 수 있다.
    1. 이 때는 앱을 다시 시작 해야 한다.

onPause() 상태

 


 

fragment life cycle

 

fragment life cycle이다. 다양한 UI를 쉽게 구성하거나 재사용에 쉬워서 자주 사용 되지만, 관리의 어려움이 있어서 activity만 사용하려고 하는 경우도 존재한다. 

  1. 프래그먼트를 추가 또는 제거하는 등 개별적인 조잘이 가능
  2. 액티비티는 프래그먼트의 트랜잭션을 관리 하며 백 스택에 추가 할 수 있습니다.
    1. 각 백 스택 항목은 back 버튼 등으로 대응해 줄 수 있다.
  3. UI가 없는 프래그먼트를 이용하여 무언가 작업을 할 수 있다.
  4. 재사용을 염두에 두고 디자인하며 한 프래그먼트를 또 다른 프래그먼트로부터 직접 조작하는 것은 삼가야 합니다
  5. todo
  6. 출처 : https://developer.android.com/guide/components/fragments

 

 

 

 

보는 김에, android.arch.lifecycle(https://developer.android.com/reference/android/arch/lifecycle/package-summary)도 같이 살펴 보면 좋을 듯하다. 각종 사이클 단계에 observer를 설정할 수 있어서 좀 더 편리하게 사이클 관리/ 작업을 처리 할 수 있다. 

  1. 참고
    1. https://gamjatwigim.tistory.com/46, 
    2. https://code.tutsplus.com/ko/tutorials/introduction-to-android-architecture--cms-28749

 

+

 

Best Practice

  1. Activity나 Fragment같은 UI controller를 최대한 가볍게 유지하라. UI controller가 데이터를 수집하지 않도록 하고 이를 ViewModel에 위임하라.
  2. LiveData를 observing하여, View에 변경사항을 반영하도록 구성한다.
  3. ViewModel은 UI controller와 나머지 앱 구성요소를 연결하는 역할을 하도록 한다. ViewModel에서 data를 직접 fetch하는것이 아니라, fetching 역할을 하는 적절한 component와 연결하는 작업을 해야한다.
  4. Data binding을 사용하면 view와 UI component간 관계를 좀더 clean하게 해줄 수 있다.
  5. UI가 복잡하다면 Presenter를 이용하여 UI 변경을 관리하라.
  6. ViewModel에서 view나 Activity context를 참조하면 안된다. ViewModel은 activity와 생명주기가 다른기 때문에 leak을 발생시킬 수 있다. 


출처: https://tourspace.tistory.com/24