Tablet이 나오기 전에는 화면의 크기가 그리 크지 않았기 때문에 Activity에서 하나의 화면만 보여주면 됐습니다. 하지만 Tablet이 나오면서 부터 화면을 분할해야 할 필요성이 생겼습니다. 같은 디자인을 Tablet에서 보면 공간 효율이 너무 좋지 않았습니다. 여백에 미도 좋긴 하지만 공간을 디자인 하는 입장에서 보면 화면 구성이 너무 비효율적이였습니다. 그래서 생긴 개념이 Fragment 입니다.
사실 허니콤이 나왔을때 까지만 해도 타블렛 앱을 개발할 일이 없어서 Fragment를 눈여겨 보지는 않았지만 아이스크림 샌드위치 이후 타블렛과 스마트폰의 운영체계가 합쳐지면서 Fragment를 사용 안할 수 없게 되었습니다. 물론 업데이트 될때마다 기존에 있든 API들이 하나씩 Deprecated 되면서 Fragment 사용을 유도하고 있는 것 또한 이제는 Fragment를 사용하지 않으면 안되지 않을까 생각합니다.
- Fragment는 Activity와 1:1 개념이 아닌 1:N 의 개념입니다.
- Fragment는 Activity와 비슷한 개념이 아닌 Activity에 안에 항상 포함되어 있는 개념입니다.
◆ Fragment LifeCycle
Activity에도 생명주기가 있듯이 Fragment에도 생명주기가 있습니다. Activity보다 다서 많은 것 같지만 크게 보면 똑같습니다. 다만 세부적으로 들어가면 몇가지 추가 되기는 했지만 생각해 보면 더 편리해 진거 같습니다.
아래는 Activity 생명주기와 Fragment의 생명주기를 비교해 놓은 그림입니다.
그림을 보시면 아시겠지만 다른 생명주기는 똑같습니다. 다만 Activity의 onCreate() 와 onDestory() method가 좀더 세분화 되었습니다. 아래 그림은 Fragment의 생명주기 입니다.
- onAttach() : Fragment가 Activity에 연결되기 전에 호출된다. Fragment는 아직 생성되지 않았다.
- onCreate() : Fragment가 생성되는 시점에 호출된다. 하지만 아직 연결되어 있지는 않는다.
- onCreateView() : 화면에 출력할 레이아웃을 Inflate 할 수 있도록 제공되는 옵션적인 성격의 CallBack Method이다.
- onActivityCreated() : Fragment와 Activity가 연결되는 시점이다.
- onStart() ~ onStop() : Activity 생명주기와 똑같다.
- onDestroyView() : Fragment View를 제거하는 곳이다.
- onDestory() : Fragment 객체를 제거하기 전이다.
- onDetach() : Fragment 객체가 제거 된 후 Activity와 연결관계를 삭제할 때 호출된다.
댓글 없음:
댓글 쓰기