안드로이드에서 화면(UI) 구성의 가장 기본 요소는 Activity이다. 앱에서 위젯(Button, ImageView)을 표시하기 위해서는 최소한 한개 이상의 Activity를 가져야 한다.
: 안드로이드 초기 시절, 작은 화면의 디바이스만 있을 당시에는 Activity 단위로만 UI를 구성해도 큰 번거로움은 없었다.
하지만 태블릿 같은 큰 화면을 가진 디바이스가 나오면서 많은 위젯들을 사용되어 지게 되었고, Activity 단위로만 구성하기 에는 큰 번거로움이 있었다.
이를 해결하기 위해 안드로이드 허니컴(3.0, API LEVEL 11)부터 'Fragment'가 도입 되었다. 위와 같이 다양한 화면 크기에 반응하는 앱을 예시로 보면 UI 모양을 더 쉽게 수정할 수 있음을 알 수 있다.
Activity 클래스는 6가지 콜백으로 구성된 핵심 집합의 onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy()를 제공한다.
Activity가 새로운 상태에 들어가면 시스템은 각 콜백을 호출한다.
맨위 부터 하나씩 살펴보자!
//Fragment에서 부모 액티비티 저장하는 법
public void onAttach(Context context){
super.onAttach(context)
if(context instanceof MainActivity){
mParent = (MainActivity)context;
}
}
onCreate() : 이 Fragment가 사용할 리소스를 초기화 한다. (UI초기화는 아님!)
onCreateView(): Layout inflate와 UI를 초기화 한다.
( inflater -> 뷰를 그려주는 역할/ container -> 부모 뷰 )
Fragment가 인터페이스를 처음으로 그릴 때 호출된다.
부모 액티비티의 onCreate()를 호출 후 실행된다.
이때, 부모 액티비티의 onCreate()가 아직 끝나지 않았으니 View를 바꾸면 안된다.
onActivityCreated() : 부모 액티비티의 onCreate() 종료 후 실행된다.
Frag,Activity 모두 View 생성이 완료된 상태이니 부모 액티비티의 View를 바꾸려면 여기서 바꾸면 된다.
위 onCreate()와 onCreateView(), onActivityCreated()는 최소한으로 구현해야 하는 3개의 생명 주기 메서드다.
Fragment를 삭제하는 경우 실행되는 함수이다.
onDestroyView() : Fragment가 있던 자리에 다른 Fragment가 대체될 때 실행된다. Fragment의 View를 제거한다.
onDestroy() : 리소스를 제거한다.
어플이 종료되거나, 절전모드 등으로 화면이 꺼지거나, 다른 어플을 실행하는 등 '사용
자가 얘를 버린것같아!' 싶을 때 실행된다.
onDetach() : 액티비티로 부터 분리될 때 실행된다.
Fragmaent는 리소스를 먼저 만들고 뷰를 만든다.
또, 뷰를 제거하고 나서 리소스 제거한다.