Android WebView에서 Rotate시에 페이지 리로드(reload) 방지하기
웹뷰를 띄우는 부분에 대해서 포스팅 을 하였는데 여기서 기기를 가로로 회전시키면 화면이 가로보기로 바뀌면서 웹페이지가 다시 리로드가 되어버립니다. 이런저런 테스트를 해보니 정확히는 Reload가 발생하는 것이 아닌 액티비티가 호출되었을 때 발생하는 이벤트인 onCreate이벤트가 다시 발생하는 것으로 보입니다. 페이지를 이동하여도 기본으로 설정한 페이지로 다시 리로드가 되어버립니다.
이부분을 수정하려면 AndroidManifest.xml파일을 수정하여야 합니다.
android:configChanges="keyboardHidden|orientation"
Manifest파일의 Activity가 정의된 부분에 위의 설정부분을 추가해줍니다. android:configChanges 는 이곳에 설정되지 않는 변화가 발생하면 액티비티를 셧다운하고 리스타트하게 되고 여기에 설정된 리스트의 변화는 onConfigurationChanged() 를 호출하게 됩니다. 여기서는 기기의 회전에 대한 orientation을 설정하였습니다. 실기기에서는 orientation만으로도 정상적으로 동작하였지만 에뮬에서는 keyboardHidden이 같이 발생 하는지 keyboardHidden도 추가해주어야 했습니다. 여러개를 적을 경우에는 파이프(|)로 연결을 합니다.
1 2 3 4 |
|
액티비티 파일에서 onConfigurationChanged()을 위와같이 오버라이드해주면 됩니다. 아직 안드로이드에 대해 절 모르면서 막 만들어보는 중이라 설명은 쉽지 않군요. 일단 저렇게 하면 로테이션시에 페이지가 리로드되지 않고 원하는대로 간단하게 화면회전만 됩니다.(웹뷰를 하면서 하기는 했는데 꼭 웹뷰에만 해당하는 문제는 아니군요. ㅡㅡ;;)
책에서는 볼수 없는 좋은 내용이 많이 있네요. 도움 많이 됩니다.
도움되셨다니 다행이네요 감사합니다. ㅎ
많은 도움 되었습니다. 감사합니다.
이제 안드로이드는 안하고 있어서 요즘은 어떤지 모르는지 다행히 아직 동작하는군요. ^^