赞
踩
最近用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;
- @Override
- protected 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(){
- @Override
- public boolean shouldOverrideUrlLoading(WebView view, String url) {
- view.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
- view.loadUrl(url);
- return super.shouldOverrideUrlLoading(view, url);
- }
- });
- }
-
- @Override
- public 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;
- }
- }
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 );
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。