생성부터 소멸단계까지 activity의 상태가 변경되는 것을 callback method로 알려줌
이를 activity lifecycle이라 한다.
6가지 콜백으로 구성된 핵심 집합의 onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy()를 제공
onCreate는 액티비티가 최초 생성될 때 실행됨. 최초 한번만 실행될 작업들을 하면 적절
ex. layout 인포메이트, 데이터 초기화
onStart 액티비티가 화면을 벗어난 이후 다시 되돌아 왔을 때 한번 더 호출될 수 있으므로 애니메이터 실행, 데이터 갱신같은 작업 처리
onResume 액티비티가 화면에서 보여지고 있음을 의미(focus를 얻음)
onPause focus를 잃을 때 호출되는 콜백
onResume과 onPause는 자주 호출될 수 있기 때문에 너무 오래걸리는 연산을 처리하면 안됨
onStop onStart와 대응해 생각하면 좋음
앱의 애니메이션을 종료하거나 데이터 갱신처리 중단 가능
onDestroy 사용중인 앱 목록에서 완전히 제거될 때 호출되는 콜백
이전단계인 onStop에서 마저 정리하지 않은 작업이 있다면 리소스 해제 처리
Activity가 실행되면 순차적으로 onCreate , onStart, onResume이 빠르게 실행된다.
onResume이 실행되면 사용자에게 화면이 보여진다.
사용자가 back이나 home 버튼을 클릭하거나 해서 해당 화면에서 벗어나면
onPause와 onStop이 실행된다.
실행중인 앱 목록에서 완전히 제거될 때 onDestroy가 실행됨
사용자가 back이나 home 버튼을 클릭해 화면을 종료했지만,
사용중인 앱 목록에 남아있는 경우 다시 그 앱으로 돌아가면 onStop 상태에서 onRestart가 호출됨 다시 onStart, onResume을 호출함.
onStop 콜백이 호출된 이후 이 앱이 메모리에서 제거해야할 대상으로 선정될 때 발생하는 단계
onCreate - 레이아웃 인플레이트하면 안됨(프래그먼트에서)
프래그먼트는 액티비티에서 인플레이트하는 뷰이므로 최소한 액티비티의 레이아웃이 인플레이트된 이후에 진행되야함 -> onCreateView에서 해야함
onCreateView
onViewCreated -
val button = view.findViewById<Button>(R.id.btn_enter_product_detail)
button.setOnClickListener {
val transaction = parentFragmentManager.beginTransaction()
transaction.add(R.id.container_main, ProductDetailFragment())
transaction.commit()
}
위 코드 같은 것들 할당하면 됨
onViewStateRestored - 화면이 소멸되었다 다시 재생성 되는 경우 이전에 저장한 데이터를 기반으로 뷰를 복원할 때 활용되는 콜백함수
onStart, onResume, onPause, onStop콜백들은 액티비티에도 있다.
이 콜백들이 호출되는 시점은 액티비티와 마찬가지이다.
onSaveInstanceState - 화면이 소멸되기 전 화면 복원시 필요한 데이터 저장하는 단계
여기서 저장하는 데이터가 Created단계의 onViewStateRestored에 전달되고 이때 해당 데이터를 기반으로 복원
onDestroyView - onCreateView와 대응해 생각하면 됨
화면이 소멸되기 전 리소스를 해제하지 못한 것이 있으면 처리하면 됨
onDestroy - 화면이 소멸되기 전 activity와 마찬가지로 호출됨
https://developer.android.com/guide/components/activities/activity-lifecycle
https://developer.android.com/guide/fragments/lifecycle