IT_Programming/Android_Java

[펌] 안드로이드 WebView 화면 전환 시 Reload 되는 현상 방지

JJun ™ 2014. 4. 20. 01:22


 출처:  http://docko.tistory.com/entry/안드로이드-WebView-화면-전환-시-Reload-되는-현상-방지


 

 

안드로이드 개발시 WebView를  적용할 때 가로/세로로 화면이 전화되면 URL이 Reload 되는 현상이 발생합니다.

(화면전환 시 Activity의 onCreate 메소드가 다시 호출되기 때문)


[화면 전환시 Method 호출 순서]

onSaveInstanceState() → onCreate() → onRestoreInstanceState()

 

 

  1. import android.os.Bundle;
  2. import android.app.Activity;
  3. import android.webkit.WebView;
  4.  
  5. public class MainActivity extends Activity {
  6.        
  7.         WebView webview;
  8.  
  9.         @Override
  10.         protected void onCreate(Bundle savedInstanceState) {
  11.                 super.onCreate(savedInstanceState);
  12.                 setContentView(R.layout.activity_main);
  13.                
  14.                 webview = (WebView)findViewById(R.id.webview);
  15.                 webview.getSettings().setJavaScriptEnabled(true);
  16.                 webview.getSettings().setBuiltInZoomControls(false);
  17.                 webview.getSettings().setSupportZoom(true);
  18.                 webview.getSettings().setLoadWithOverviewMode(true);
  19.                 webview.getSettings().setUseWideViewPort(true);
  20.                
  21.                 if(savedInstanceState == null)
  22.                         webview.loadUrl("http://m.daum.net");
  23.         }
  24.  
  25.  
  26.         @Override
  27.         protected void onSaveInstanceState(Bundle savedInstanceState){
  28.                 super.onSaveInstanceState(savedInstanceState);
  29.          
  30.                 webview.saveState(savedInstanceState);
  31.         }
  32.        
  33.         @Override
  34.         protected void onRestoreInstanceState(Bundle savedInstanceState){
  35.             super.onRestoreInstanceState(savedInstanceState);
  36.          
  37.             webview.restoreState(savedInstanceState);
  38.         }
  39.  
  40. }