많이 봐오던 안드로이드 라이프 사이클이다.
- onPause()는 현재 상태에서 팝업이 뜰 경우 발생할 수 있다.
- onStop()는 홈버튼을 눌렀을 때 발생한다.
- recent키를 통해서 앱을 선택하게 되면 onRestart() 상태가 된다.
- onDestory()는 recent에서 앱을 닫았을 때 발생한다.
- App process killed는 시스템에서 메모리가 부족할 때 언제나 발생할 수 있다.
- 이 때는 앱을 다시 시작 해야 한다.
fragment life cycle이다. 다양한 UI를 쉽게 구성하거나 재사용에 쉬워서 자주 사용 되지만, 관리의 어려움이 있어서 activity만 사용하려고 하는 경우도 존재한다.
- 프래그먼트를 추가 또는 제거하는 등 개별적인 조잘이 가능
- 액티비티는 프래그먼트의 트랜잭션을 관리 하며 백 스택에 추가 할 수 있습니다.
- 각 백 스택 항목은 back 버튼 등으로 대응해 줄 수 있다.
- UI가 없는 프래그먼트를 이용하여 무언가 작업을 할 수 있다.
- 재사용을 염두에 두고 디자인하며 한 프래그먼트를 또 다른 프래그먼트로부터 직접 조작하는 것은 삼가야 합니다
- todo
- 출처 : https://developer.android.com/guide/components/fragments
보는 김에, android.arch.lifecycle(https://developer.android.com/reference/android/arch/lifecycle/package-summary)도 같이 살펴 보면 좋을 듯하다. 각종 사이클 단계에 observer를 설정할 수 있어서 좀 더 편리하게 사이클 관리/ 작업을 처리 할 수 있다.
- 참고
+
Best Practice
- Activity나 Fragment같은 UI controller를 최대한 가볍게 유지하라. UI controller가 데이터를 수집하지 않도록 하고 이를 ViewModel에 위임하라.
- LiveData를 observing하여, View에 변경사항을 반영하도록 구성한다.
- ViewModel은 UI controller와 나머지 앱 구성요소를 연결하는 역할을 하도록 한다. ViewModel에서 data를 직접 fetch하는것이 아니라, fetching 역할을 하는 적절한 component와 연결하는 작업을 해야한다.
- Data binding을 사용하면 view와 UI component간 관계를 좀더 clean하게 해줄 수 있다.
- UI가 복잡하다면 Presenter를 이용하여 UI 변경을 관리하라.
- ViewModel에서 view나 Activity context를 참조하면 안된다. ViewModel은 activity와 생명주기가 다른기 때문에 leak을 발생시킬 수 있다.