반응형
출처 - http://schwein7.tistory.com/10
이번에 살펴본 Activity 의 attribute 는 configChanges 입니다.
자 각설하고 바로 developers 부터 살펴볼까요?
- Activity가 스스로 handling 하도록 할 changes 를 나열해 주는 곳입니다.
- Runtime 에 configuration이 change 된다면, 기본동작은 activity 가 shut down 되고 restart 됩니다.
- configChanges 에 값을 주어, 변화가 되어도 activity 를 restart 시키지 않도록 할 수 있습니다.
- 이 때 Activity의 onConfigurationChanged() 함수가 호출됩니다.
- 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() 함수가 호출될 뿐이죠.
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 에 대해 자신있게 다룰 수 있겠죠?
(그러길 빌며.. )
반응형
'개발 > 안드로이드' 카테고리의 다른 글
[android]블루투스(bluetooth) 통신 (0) | 2011.05.30 |
---|---|
안드로이드 키보드 옵션 (0) | 2011.05.12 |
Custom ProgressBar 사용 (0) | 2011.05.04 |
안드로이드 (android) 네트워크 프로그램 사용시 Connection Timeout 체크하기 (0) | 2011.05.03 |
WIFI 대기모드에서 돌아가게 하기 (0) | 2011.05.03 |
댓글