您的位置:首页 > 移动开发

关于webview加载网页,返回后总是刷新页面问题解决

2016-06-20 18:23 826 查看
最近用webview发现返回上个页面总是又自动刷新页面,我的需求是进入下页的时候不用缓存,而返回上个页面的时候不要刷新页面回到顶部,要保持在原来页面进入下页的位置。首先来了解一下webview加载网页的几个模式,即websetting中设置的加载模式。websetting.setCacheMode( int  mode)LOAD_CACHE_ELSE_NETWORK:只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。LOAD_CACHE_ONLY:只加载缓存数据,如果没有缓存数据,就出现加载失败;LOAD_DEFAULT:默认加载方式, 根据cache-control决定是否从网络上取数据;LOAD_NO_CACHE:不使用缓存,只从网络获取数据;LOAD_CACHE_NORMAL: API level 17中已经废弃,从API level 11开始作用同LOAD_DEFAULT模式想要返回的时候不重新获取数据,刷新页面就需要设置模式LOAD_CACHE_ELSE_NETWORK,进入下页时不采用缓存数据需要设置模式 LOAD_DEFAULT 或者 LOAD_NO_CACHE,代码如下:public class WebViewActivity extends Activity{private WebView mWebView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_webview);mWebView = (WebView) findViewById(R.id.webview);initWebView();mWebView.loadUrl("http://www.baidu.com");}private void initWebView() {WebSettings ws = mWebView.getSettings();ws.setJavaScriptEnabled(true);mWebView.setWebViewClient(new WebViewClient(){@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {view.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);view.loadUrl(url);return super.shouldOverrideUrlLoading(view, url);}});}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode==KeyEvent.KEYCODE_BACK){if(mWebView.canGoBack()){mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);mWebView.goBack();return true;}}return false;}}另外记录几个websetting常用的几个设置:webSettings.setDomStorageEnabled ( boolean );//是否支持持久化存储,保存到本地webSettings.setJavaScriptEnabled ( boolean );//设置支持javascript脚本webSettings.setSupportZoom ( boolean ) ;// 设置支持缩放webSettings.setBuiltInZoomControls ( boolean );//设置是否出现缩放工具webSettings.setDatabaseEnabled ( boolean );//开启database storage API 功能
webSettings.setDatabasePath(path);//设置数据库缓存路径
webSettings.setAppCacheEnabled(
boolean );//设置开启application H5 Caches 功能
webSettings.setAppCachePath(path);//设置application
caches 缓存目录
//设置webview自适应屏幕webSettings.setLayoutAlgorithm ( LayoutAlgorithm.SINGLE_COLUMN );webSettings.setLoadWithOverviewMode ( true ); 

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  webview 缓存