지난 글에서, 단말기의 환경(방향 변화)에 따라서 액티비티가 어떤 변화를 겪는지에 대해 알아보았습니다. 액티비티 입장에서는 정말 상상할 수 없을 정도로 크나큰 고통을 겪게 됩니다. 엄청 짜증나죠 -_-;;
하지만, 이렇게 고생을 하는 이유는 따로 있습니다. 바로, "준비가 되어 있지 않았기" 때문이죠.
액티비티를 (메니페스트 파일에) 정의된 부분에 방향 변화에 대응할 수 있도록 해주는 속성을 같이 정의해주게 되면 방향이 변하더라도 액티비티가 소멸되지 않습니다. 대신에, onConfigurationChanged(Configuration) 메소드가 호출되면서 환경이 바뀌었을 때 해 주어야 할 것들을 처리해줄 수 있습니다. 특별히 처리해주어야 할 것들이 있다면, 이 메소드를 오버라이드하여 해당 작업을 처리해주면 됩니다.
예를 들어, 액티비티가 방향 변화에 대응할 수 있도록 하려면 아래와 같이 메니페스트 파일을 수정하면 됩니다.
<activity android:name="ClassEdit" android:configChanges="orientation">
위와 같이 메니페스트 파일에 직접 추가해주어도 되고, 아래처럼 액티비티 속성(Attributes)창에서 설정해주는 것도 가능합니다.
이와 같이 설정을 해준 후 액티비티를 실행하고, 액티비티가 실행되고 있는 상태에서 화면의 방향이 바뀌게 되면 예전처럼 액티비티가 소멸되었다가 다시 실행되지 않고, 현재 상태를 유지한 채로 onConfigurationChanged()메소드만을 호출합니다.
액티비티가 대응할 수 있는 상태 변화는 화면의 방향 변화 외에도 다양하게 있습니다. 액티비티가 대응할 수 있는 상태 변화에 대해 자세한 정보를 알고 싶으신 분들은 아래의 링크를 참조하세요.
Configuration Changes
http://developer.android.com/reference/android/app/Activity.html#ConfigurationChanges
android:configChanges attribute (in AndroidManifest.xml)
http://developer.android.com/reference/android/R.attr.html#configChanges
http://developer.android.com/reference/android/app/Activity.html#ConfigurationChanges
android:configChanges attribute (in AndroidManifest.xml)
http://developer.android.com/reference/android/R.attr.html#configChanges
'어플리케이션 구성 > 액티비티(Activity)' 카테고리의 다른 글
방향 변화에 대처하는 액티비티의 자세 (부제 : 날 좀 내버려둬!) (4) | 2009.12.09 |
---|---|
액티비티 생애주기, 눈으로 확인하자! (19) | 2009.10.11 |
액티비티와 태스크(Task) (6) | 2009.09.20 |
액티비티의 생애주기(Lifecycle) (13) | 2009.09.18 |
이클립스에서 안드로이드 액티비티 추가하기 (16) | 2009.03.01 |