본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Android/안드로이드] Runtime 에 Resource change 에 대하여..

by 돼지왕 왕돼지 2012. 6. 12.
반응형




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 를 명시해주어야 한다. 




도움이 되셨다면 손가락 꾹~

 



반응형

댓글