본문 바로가기
개발/안드로이드

Manifest <activity> configChanges attribute.

by darksilber 2011. 5. 12.
반응형

출처 - http://schwein7.tistory.com/10

이번에 살펴본 Activity 의 attribute 는 configChanges 입니다.


자 각설하고 바로 developers 부터 살펴볼까요?

- Activity가 스스로 handling 하도록 할 changes 를 나열해 주는 곳입니다.

- Runtime 에 configuration이 change 된다면, 기본동작은 activity 가 shut down 되고 restart 됩니다.

- configChanges 에 값을 주어, 변화가 되어도 activity 를 restart 시키지 않도록 할 수 있습니다.

- 이 때 Activity의 onConfigurationChanged() 함수가 호출됩니다.


요런 특징을 가지고 있는 attribute 네요. 무슨 말인지 아시겠어요??





잘 감이 안 올때는 예제가 최고입죠.

no configChanges 일 때 portrait mode -> landscape mod 가 되면 기본적으로
Activity 가 destroy 되었다가 다시 시작됩니다.

configChanges = "orientation" 가 설정이 되면, 같은 portrait -> landscape 가 되어도,
Activity 를 destroy 시키지 않고, 다만 Activity 안의 onConfigurationChanged() 함수가 호출될 뿐이죠.




* Portrait mode 와 Landscape mode 가 뭐냐구요?

자 이제 감이 오십니까?

자 그럼 이걸 왜 쓸까요?

가장 흔하게 접할 수 있는 것 중 하나가 위에서 예를 든 orientation 이구요.
마찬가지로 흔하게 접할 수 있는 것이 keyboardHidden 입니다.
keyboardHidden 은 hardware keyboard 가 보이냐 안 보이냐에 따라서 발생하는 change 입니다.

옵티머스 Q 를 보면, 슬라이드 형식으로 QWERTY 자판이 나왔다 들어갔다 하죠. ( Hardware keyboard )
이 때마다 Activity 가 파괴되고 생성되면 안 되겠죠? 그래서 QWERTY 자판이 있을 경우는
거의 반드시 이 attribute 설정이 필요하죠.


그럼 어떤 change 현상들에 대해서 기본적으로 activity 를 파괴하고 다시 생성할까요?
attribute 값들을 보죠.

* multiple value 는 | 로 구분되어 입력 가능합니다.


Value Description
"mcc" SIM 이 detect 되고 MCC 가 update 될 경우. ( IMSI mobile country code 가 변했을 때 )
"mnc" SIM 이 detect 되고 MNC 가 update 될 경우. ( IMSI mobile network code 가 변했을 때 )
"locale" user 가 새로운 language 를 선택했을 때 ( locale 이 변경될 때 )
"touchscreen" touch screen hardware 가 바뀌얼을 때 ( 보통 절대 일어나지 않는 case )
"keyboard" user 가 external keyboard 를 꽂았을 때를 비롯하여 keyboard의 type 변경되었을 때
"keyboardHidden" user 가 hardware keyboard 를 보이고 감추는 등의 keyboard 의 accessibility 가 변경되었을 때
"navigation" navigation type ( 트랙볼 / dpad ) 가 변경되었을 때 ( 보통 절대 일어나지 않는 case )
"orientation" user 가 device 를 돌리는 등의 행위로 screen 의 orientation 이 변경되었을 경우.
"screenLayout" screen layout 이 변했을 때. 다른 display 가 activate 되었을 경우 layout 이 변한 것으로 본다.
"fontScale" user 가 새로운 font size 를 선택하였을 때.
"uiMode" user 가 device 를 desk 나 car dock 등에 비치하여 interface mode 를 바꾸었을 때.




또 용어들의 문제가 나오는군요?!
자 이제 configuration change 에 대해 자신있게 다룰 수 있겠죠?

(그러길 빌며.. )
반응형

댓글