http://developer.android.com/guide/topics/resources/runtime-changes.html
- configuration change 가 발생할 때 costly 한 object 들을 보관하기 위해서는 onRetainNonConfigurationInstance() 함수를 통해서 retain 하고 싶은 object 를 return 해주면 된다. 복구는 activity 가 다시 create 될 때 getLastNonConfigurationInstance() 를 통해 recover 할 수 있다. onRetainNonConfigurationInstance() 는 onStop() 과 onDestroy() 사이에 불린다.
- 위의 방법 대신에 Bundle 에 Data 를 넣는 방법도 있겠지만, 모든 내용물이 serialize & deserialize 되어야 하며 내용물이 많을 때는 performance 와 memory 모두 costly 하기 때문에 좋지 않다.
- onRetainNonConfigurationInstance() 를 통해서 Object 를 return 할 때 Activity, 엄밀히 이야기하면 Context 와 연관된 녀석은 절대 return하면 안된다. 예를 들면 Drawable, Adapter, View 같은 녀석들. 그렇게 되면 memory leak 이 생기기 쉽다. ( 이전 activity 가 destory 가 안 된다. )
- activity 에 android:configChanges 를 명시하여, activity 의 restart 를 방지했어도, onConfigurationChanged() 함수가 불리는 순간 Resource 는 새로운 configuration 에 맞도록 자동 설정이 된다.
- API Level 13 이상부터는 orientation 이 변할 때 screen size change 도 발생하여 activity 를 재시작시킬 수 있다. 이를 방지하기 위해서 orientation | screenSize 를 명시해주어야 한다.
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Android/안드로이드] Drawable 에 대한 모든 것. (0) | 2012.06.12 |
---|---|
[Android/안드로이드] emulator 의 locale 을 adb를 이용하여 바꾸는 방법. (0) | 2012.06.12 |
[Android/안드로이드] Resource 접근에 대하여.. (0) | 2012.06.12 |
[Android/안드로이드] Resource 제공에 대하여.. (1) | 2012.06.12 |
[Android/안드로이드] Android 는 View 를 어떻게 그리는가? (0) | 2012.06.12 |
댓글