어플리케이션 구성/액티비티(Activity)
방향변화에 대처하는 액티비티의 자세 Part.2 (부제 : 준비된 자만이 살아남는다)
커니
2009. 12. 10. 02:57
지난 글에서, 단말기의 환경(방향 변화)에 따라서 액티비티가 어떤 변화를 겪는지에 대해 알아보았습니다. 액티비티 입장에서는 정말 상상할 수 없을 정도로 크나큰 고통을 겪게 됩니다. 엄청 짜증나죠 -_-;;
하지만, 이렇게 고생을 하는 이유는 따로 있습니다. 바로, "준비가 되어 있지 않았기" 때문이죠.
액티비티를 (메니페스트 파일에) 정의된 부분에 방향 변화에 대응할 수 있도록 해주는 속성을 같이 정의해주게 되면 방향이 변하더라도 액티비티가 소멸되지 않습니다. 대신에, 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