关于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 );
相关文章推荐
- 页面缓存:内存和文件之间的那些事
- 浅析SQL Server中的执行计划缓存(上)
- Enterprise Library for .NET Framework 2.0缓存使用实例
- PowerShell中编程清空IE缓存方法
- PowerShell中使用.NET将程序集加入全局程序集缓存
- C#中缓存的基本用法总结
- Android实现图片异步加载并缓存到本地
- wap开发中如何有效的利用缓存减少消息的传送量
- PHP基于文件存储实现缓存的方法
- smarty缓存用法分析
- 在ASP.NET 2.0中操作数据之五十九:使用SQL缓存依赖项SqlCacheDependency
- 在ASP.NET 2.0中操作数据之五十八:在程序启动阶段缓存数据
- 在ASP.NET 2.0中操作数据之五十七:在分层架构中缓存数据
- 引用全局程序集缓存内的程序集的方法
- asp Response.flush 实时显示进度
- C#实现清除IE浏览器缓存的方法
- ASP.NET缓存管理的几种方法
- PHP文件缓存类实现代码
- 清除aspx页面缓存的程序实现方法
- C#缓存之SqlCacheDependency用法实例总结