[android] Fragment 와 함께라면 Configuration Change 가 무섭지 않아. |
-
애석하게도 대부분의 개발자들이 manifest 에 configChanges 속성을 통해 orientation 값만 설정해주면 모든게 해결되는 줄 안다.
하지만 그렇지 않다.
Configuration Change 는 여러 경우에 발생된다.
기본적으로 configChanges 에 들어가는 값들의 상황이 그렇고,
언어가 변경되거나, dock 에 연결되거나, font 크기가 바뀌거나 등의 조건으로 destroy-recreate 되곤 한다.
또한 리소스, 메모리 관리 측면에서 Activity 가 destroy 되고 create 되도록 하는 것이 좋다.
-
예전부터 개발을 해온 사람이라면 Activity 에 onRetainNonConfigurationInstance() 가 있잖아? 라고 말할 수 있겠지만,
해당 method는 HoneyComb 부터 deprecated 되었다.
덧붙여 getLastNonConfigurationInstance() 도..
-
그럼 이제 상태보관은 어떻게 할까?
Framgment 로 옮겨졌다. ( fragment 를 사용을 확고한 design pattern 으로 만들려는듯 하다. )
-
Configuration 이 변경될 때 Frgment 를 담는 Activity 는 lifecycle 을 그대로 타고,
Fragment 에 setRetainInstance( true )를 통해 Fragment 는 onDetach, onAttach 등의 life cycle 만 진행된다.
따라서 Activity 는 Control 만 주관하고, 모든 일은 Fragment 가 처리하도록 하면 state 유지에 문제가 없고,
만약에 AsyncTask 등이 Context 를 필요로 하지 않는다면, 상황이 Good.
만약 Context 를 사용한다면 Fragment 에서 activity 에 onAttach 가 되었는지 확인하여 적절한 조치를 취해주면 되겠다.
참고 : setRetainInstance( true ) 가 아닌경우는 onAttach() -> onCreate() -> onCreateView() 의 lifecycle 을 타며,
setRetainInstance( true ) 일 경우는 onAttach(), onCreateView() 만 탄다.
참조 : http://www.androiddesignpatterns.com/page2/
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Java] Generic explicit type parameter 이야기 (0) | 2016.10.18 |
---|---|
WeakHashMap 에 대해 제대로 이해하자. (0) | 2016.10.13 |
[android] PageTransformer 와 함께 하는 ViewPager 의 화려한 animation (0) | 2016.10.04 |
[android] RecyclerView 에 대한 맛보기 이야기 (0) | 2016.09.23 |
[android] button 에 shake anim 효과 주기 (0) | 2016.09.22 |
댓글