[Android] Fragment 생명주기

Posted by 알 수 없는 사용자
2015. 8. 10. 09:56 프로그래밍/Android

Fragment란 ? 


Activity 는 한 화면에 보이는 전부를 칭하며 Android가 스마트폰에 발전에 따른 넓은 화면과 화려한 어플리케이션 개발을 위해서 Fragment라는 개념을 사용하기 시작했습니다.

기본 Activity 한 화면에 여러 공간으로 쪼개어 사용하거나 Activity의 이동이 없이 Activity 내부에서 다른 Layout으로 바꾸는 경우에 사용되고 있습니다.Fragment는 Android 3.0(허니컴)부터 API를 지원해 왔으며 그 이하 버전은 Support.v4의 FragmentActivity를 사용한다면 동일하게 사용가능 하다.



Fragment 특징



Fragment 클래스는 인스턴스화되고 액티비티와 연결하는 과정에 있어 프래그먼트 자체 생명주기가 작동한다.


Fragment는 Activity와 마찬가지로 Back Stack을 사용 할 수 있으나, Activity처럼 다양한 Stack방식을 지원하지 않는다.


Fragment는 여러 Activity에서 사용될 수 있으므로 Activity에 독립적으로 구현되어야 한다.


Fragment는 Activity가 아니기 때문에 context를 가지지 않는다.


Fragment 종류

DialogFragment: 떠다니는 다이얼로그를 보여주는 Fragment. Fragment는 백스택에 넣어둘 수 있기 때문에 사용자가 다시 Fragment로 복귀하고자 할 때에 Activity에 기본적으로 들어있는 다이얼로그 대신에 사용할수 있는 좋은 대체제이다. 

ListFragment: Adapter를 통해서 List를 보여주는 Fragment로 ListActivity와 비슷하고, list view에서 다룰 수 있는 onListItemClick()과 같은 콜백 함수들도 제공한다.

PreferenceFragment: Preference 객체들을 목록으로 보여주는 PreferenceActivity와 비슷하며, 앱의 Settings를 만들 때에 유용하게 사용할 수 있다.

Fragment 생명주기


FragmentTransaction으로 Fragment를 add,remove, replace 한다. 이외 레이아웃에서 바로 add하는 경우도 있다.

1. onAttach()


Fragment가 Activity에 붙을때 호출 된다.


2. onCreate()


Activity의 onCreate()와 비슷하나, UI 관련 작업은 할 수 없다.


3. onCreateView()


Fragment 와 관련 되는 View 계층을 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와 연결이 완전히 끊기기 직전에 호출 된다.


'프로그래밍 > Android' 카테고리의 다른 글

[Android] Permission, 권한  (4) 2015.08.10
[Android] Activity 생명주기  (11170) 2015.08.10
[Android Facebook SDK] 1.Facebook SDK import  (4) 2015.07.28