액티비티
override fun onStart() {
super.onStart()
Log.e("life", "a3_detail_onStart")
}
override fun onResume() {
super.onResume()
Log.e("life", "a3_detail_onResume")
}
override fun onPause() {
super.onPause()
Log.e("life", "a3_detail_onPause")
}
override fun onRestart() {
super.onRestart()
Log.e("life", "a3_detail_onRestart")
}
override fun onStop() {
super.onStop()
Log.e("life", "a3_detail_onStop")
}
override fun onDestroy() {
super.onDestroy()
Log.e("life", "a3_detail_onDestroy")
}
프래그먼트
@Override public void onAttach(Context context) { Log.d("FragmentLifeCycle", "onAttach()"); super.onAttach(context); }
@Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("FragmentLifeCycle", "onCreate()"); }
//oncreateview
@Override public void onActivityCreated(Bundle savedInstanceState) { Log.d("FragmentLifeCycle", "onActivityCreated()"); super.onActivityCreated(savedInstanceState); }
@Override public void onViewCreated(View view, Bundle savedInstanceState) { Log.d("FragmentLifeCycle", "onViewCreated()"); super.onViewCreated(view, savedInstanceState); }
@Override public void onStart() { Log.d("FragmentLifeCycle", "onStart()"); super.onStart(); }
@Override public void onResume() {Log.d("FragmentLifeCycle", "onResume()"); super.onResume(); }
@Override public void onPause() {Log.d("FragmentLifeCycle", "onPause()"); super.onPause(); }
@Override public void onStop() {Log.d("FragmentLifeCycle", "onStop()"); super.onStop(); }
@Override public void onDestroyView() { Log.d("FragmentLifeCycle", "onDestroyView()"); super.onDestroyView(); }
@Override public void onDetach() { Log.d("FragmentLifeCycle", "onDetach()"); super.onDetach(); }
/** 생명주기
* Fragment Life Style
* 1. Fragment is added
* 2. onAttach() Fragment가 Activty에 붙을때 호출
* 3. onCreate() Activty에서의 onCreate()와 비슷하나, ui 관련 작업은 할 수 없다.
* 4. onCreateView() Layout을 inflater을 하여 View 작업을 하는 곳
* 5. onActivityCreated() Activity에서 Fragment를 모두 생성하고난 다음에 호출됨. Activty의 onCreate()에서 setContentView()한 다음과 같다
* 6. onStart() Fragment가 화면에 표시될때 호출, 사용자의 Action과 상호 작용이 불가능함
* 7. onResume() Fragment가 화면에 완전히 그렸으며, 사용자의 Action과 상호 작용이 가능함
* 8. Fragment is active
* 9. User navigates backward or fragment is removed/replaced or Fragment is added to the back stack, then removed/replaced
* 10. onPause()
* 11. onStop() Fragment가 화면에서 더이상 보여지지 않게됬을때
* 12. onDestroy() View 리소스를 해제할수있도록 호출. backstack을 사용했다면 Fragment를 다시 돌아갈때 onCreateView()가 호출됨
* 13. onDetached()
* 14. Fragment is destroyed
*/
1) onAttach() Fragment가 Activity에 붙을때 호출 된다.
2) onCreate() Activity에서의 onCreate()와 비슷하나, ui관련 작업은 할 수 없다.
3) onCreateView() Layout을 inflater을하여 View작업을 하는곳이다.
4) onActivityCreated() Activity에서 Fragment를 모두 생성하고 난다음 호출 된다. Activity의 onCreate()에서 setContentView()한 다음이라고 생각 하면 쉽게 이해 될것 같다. 여기서 부터는 ui변경작업이 가능하다.
5) onStart() Fragment가 화면에 표시될때 호출된다. 사용자의 Action과 상호 작용 할 수 없다.
6) onResume() Fragment가 화면에 완전히 그렸으며, 사용자의 Action과 상호 작용이 가능하다.
다른 Fragment가 add
1) onPause() Fragment가 사용자의 Action과 상호 작용을 중지한다.
2) onStop() Fragment가 화면에서 더이상 보여지지 않게 되며, Fragment기능이 중지 되었을때 호출 된다.
3) onDestoryView() View 리소스를 해제 할수 있도록 호출된다. backstack을 사용 했다면 Fragment를 다시 돌아 갈때 onCreateView()가 호출 된다.
Replace or backward로 removed되는 경우
4) onDestory() Fragment상태를 완전히 종료 할 수 있도록 호출 한다.
5) onDetach() Fragment가 Activity와 연결이 완전히 끊기기 직전에 호출 된다.
그외 Callbacks Method
onSaveInstanceState() Activity와 동일하게 Fragment가 사라질떄 호출되며 상태를 Bundle로 저장할수 있도록 호출 된다. 그럼 간단한 테스트 코드를 통해 Lifecycle에 맞게 작동 되는지 확인 해보도록 하자.