fragment
onCreate()
public void onCreate(@Nullable Bundle savedInstanceState) {
mCalled = true;
restoreChildFragmentState(savedInstanceState);
if (!mChildFragmentManager.isStateAtLeast(Fragment.CREATED)) {
mChildFragmentManager.dispatchCreate();
}
}
- fragment만 create된 상황으로 fragment view가 생성되지 않은 상태
- 이전에
onAttach()
가 먼저 호출된다
onCreateView()
public View onCreateView(@NonNull LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
if (mContentLayoutId != 0) {
return inflater.inflate(mContentLayoutId, container, false);
}
return null;
}
- createView() 를 재정의 하여 fragment view를 직접 생성하거나 재정의 없이 바로 callback되는 onViewCreated 에서 설정해도 됩니다.
onViewCreated()
public void onViewCreated(@NonNull View view,
@Nullable Bundle savedInstanceState) {
}
- Lifecycle이
INITIALIZED
상태
- view 초기값 설정
- LiveData Observe
- RecyclerView 또는 ViewPager Adapter 세팅
onViewStateRestored()
public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
mCalled = true;
}
- 저장해준 state 값이 fragment 의 view계층 구조에 복원 되었을때 호출
- 뷰의 상태 값을 체크 할 수 있습니다
- Lifecycle이
CREATED
상태
onStart()
public void onStart() { mCalled = true; }
- fragment가 사용자에게 보여질 수 있을때 호출됩니다
- 이 시점 부터 fragmnet 의 child FragmentManager 를 통해 FragmentTransaction 을 수행
- Lifecycle이
STARTED
상태
onResume()
public void onResume() { mCalled = true; }
- fragment와 사용자가 상호작용할 수 있을때 호출됨
- onResume() 이 호출되지 않은 경우에는 I/O 작업이 불가능하다
onPause()
public void onPause() { mCalled = true; }
- 사용자가 fragment를 떠나고 있지만 fragment가 아직 노출되었을때
- Lifecycle 이 PAUSE가 아닌
STARTED
가 된다
onStop()
public void onStop() { mCalled = true; }
- fragment가 더 이상 화면에 보여지지 않게 되면 fragment와 view의 lifecycle이
CREATED
상태가 되고 onStop() 이 호출
- 부모 activity 또는 fragment가 중단 또는 상태가 저장될때도 호출
- 28버전 이후로 onStop() 와 onSaveInstanceState() 가 바뀌었습니다
onDestroyView()
public void onDestroyView() { mCalled = true; }
- exit animaition 과 transaction 이 완료되고 fragment가 화면으로부터 벗어난 경우
- Lifecycle 이
DESTROYED
가 된다
- 이 시점 부터는 GC에 의해 데이터들이 수거 될 수 있도록 fragment view에 대한 모든 참조가 제거 되어야 합니다
onDestroy()
public void onDestroy() { mCalled = true; }
- fragment 가 제거되거나 fragmentManager가 destory 가 됐을 경우
- Lifecycle 가
DESTROYED
가 된다
- 이후에 onDetach() 가 호출 된다
Reference