본문 바로가기

어플리케이션 구성/액티비티(Activity)

방향변화에 대처하는 액티비티의 자세 Part.2 (부제 : 준비된 자만이 살아남는다)


지난 글에서, 단말기의 환경(방향 변화)에 따라서 액티비티가 어떤 변화를 겪는지에 대해 알아보았습니다. 액티비티 입장에서는 정말 상상할 수 없을 정도로 크나큰 고통을 겪게 됩니다. 엄청 짜증나죠 -_-;;

하지만, 이렇게 고생을 하는 이유는 따로 있습니다. 바로, "준비가 되어 있지 않았기" 때문이죠.
액티비티를 (메니페스트 파일에) 정의된 부분에 방향 변화에 대응할 수 있도록 해주는 속성을 같이 정의해주게 되면 방향이 변하더라도 액티비티가 소멸되지 않습니다. 대신에, onConfigurationChanged(Configuration) 메소드가 호출되면서 환경이 바뀌었을 때 해 주어야 할 것들을 처리해줄 수 있습니다. 특별히 처리해주어야 할 것들이 있다면, 이 메소드를 오버라이드하여 해당 작업을 처리해주면 됩니다.

예를 들어, 액티비티가 방향 변화에 대응할 수 있도록 하려면 아래와 같이 메니페스트 파일을 수정하면 됩니다.

<activity android:name="ClassEdit" android:configChanges="orientation">

위와 같이 메니페스트 파일에 직접 추가해주어도 되고, 아래처럼 액티비티 속성(Attributes)창에서 설정해주는 것도 가능합니다.



이와 같이 설정을 해준 후 액티비티를 실행하고, 액티비티가 실행되고 있는 상태에서 화면의 방향이 바뀌게 되면 예전처럼 액티비티가 소멸되었다가 다시 실행되지 않고, 현재 상태를 유지한 채로 onConfigurationChanged()메소드만을 호출합니다.

액티비티가 대응할 수 있는 상태 변화는 화면의 방향 변화 외에도 다양하게 있습니다. 액티비티가 대응할 수 있는 상태 변화에 대해 자세한 정보를 알고 싶으신 분들은 아래의 링크를 참조하세요.