Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Android WebView에서 Rotate시에 페이지 리로드(reload) 방지하기

웹뷰를 띄우는 부분에 대해서 포스팅을 하였는데 여기서 기기를 가로로 회전시키면 화면이 가로보기로 바뀌면서 웹페이지가 다시 리로드가 되어버립니다. 이런저런 테스트를 해보니 정확히는 Reload가 발생하는 것이 아닌 액티비티가 호출되었을 때 발생하는 이벤트인 onCreate이벤트가 다시 발생하는 것으로 보입니다. 페이지를 이동하여도 기본으로 설정한 페이지로 다시 리로드가 되어버립니다.

이부분을 수정하려면 AndroidManifest.xml파일을 수정하여야 합니다.

android:configChanges="keyboardHidden|orientation"

Manifest파일의 Activity가 정의된 부분에 위의 설정부분을 추가해줍니다. android:configChanges는 이곳에 설정되지 않는 변화가 발생하면 액티비티를 셧다운하고 리스타트하게 되고 여기에 설정된 리스트의 변화는 onConfigurationChanged()를 호출하게 됩니다. 여기서는 기기의 회전에 대한 orientation을 설정하였습니다. 실기기에서는 orientation만으로도 정상적으로 동작하였지만 에뮬에서는 keyboardHidden이 같이 발생하는지 keyboardHidden도 추가해주어야 했습니다. 여러개를 적을 경우에는 파이프(|)로 연결을 합니다.


@Override
public void onConfigurationChanged(Configuration newConfig){      
    super.onConfigurationChanged(newConfig);
}

액티비티 파일에서 onConfigurationChanged()을 위와같이 오버라이드해주면 됩니다. 아직 안드로이드에 대해 절 모르면서 막 만들어보는 중이라 설명은 쉽지 않군요. 일단 저렇게 하면 로테이션시에 페이지가 리로드되지 않고 원하는대로 간단하게 화면회전만 됩니다.(웹뷰를 하면서 하기는 했는데 꼭 웹뷰에만 해당하는 문제는 아니군요. ㅡㅡ;;)
2010/05/03 03:06 2010/05/03 03:06