ANDROID

onConfigurationChanged -

룸훼훼 2011. 2. 21. 21:03
반응형

오늘 생긴 문제..킁..

Touch Keypad 에서 Qwerty로 넘어가 Press 동작중에 닫으면 다시 Activity가 재실행 된다.

여기서 문제가 발생하게 되는데 이유는  Keypad전환으로 인해서 Activity가 다시 실행된다.

그러면서 이전에 하고 있던 동작들이 다시 실행이 되는 경우다. 화면전환, 방향전환의 경우에 생기는 문제는 중 

이중으로 동작하는 문제는 왠만하면 이거같다.

해결 방법은 onConfigurationChanged()를 override 해주면 된다.

재정의할 경우 activity의 이벤트를 실행하지 않고.. onConfigurationChanged()함수를 Call하고 빈 함수로 만든다.

AndroidManifest.xml에 android:configChanges="orientation|keyboardHidden도 추가 해주어야 한다.

책의 힘을 빌어 정확하게 얘기하자면

안드로이드는 모든변화에 대해 Activity를 재시작하도록 되어 있지만 manifest에 configChanges를 기록해 놓으면 해당

변화에 대해서는 Activity를 재시작 하지 않는다. 대신 onConfigurationChange method를 호출 하여 환경이 바뀌었을음 

알려주는데 이 Method에서 환경변화에 필요한 처리를 하면된다.


android:configChanges 에 선언할 옵션항목은 아래와 같다.

orientation: 스크린이 세로에서 가로로 바뀌는 변경사항.

keyboardHidden: 키보드가 보여지거나 숨겨지는 변경사항 .
fontScale: 사용자가 원하는 폰트의 크기를 변경하는 것.
locale: 사용자가 언어 세팅을 변경하는것.
keyboard: 키보드의 종류가 바뀌는 사항

mcc: SIM의 mcc(Mobile Country Code)가 변경 되었을때.

mnc: SIM의 mnc(Mobile Network code)가 변경 되었을때.

touchscreen: 터치스크린 장비가 변경되었을떄, 통상의 경우에는 거의 발생하지 않는다.

navigation: 네비게이션이 변경 되었을때.




훗훗..

반응형