当前位置:   article > 正文

关于webview加载网页,返回后总是刷新页面问题解决_webview 返回上个页面为什么数据会刷新

webview 返回上个页面为什么数据会刷新

最近用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,代码如下:

  1. public class WebViewActivity extends Activity{
  2. private WebView mWebView;
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.activity_webview);
  7. mWebView = (WebView) findViewById(R.id.webview);
  8. initWebView();
  9. mWebView.loadUrl("http://www.baidu.com");
  10. }
  11. private void initWebView() {
  12. WebSettings ws = mWebView.getSettings();
  13. ws.setJavaScriptEnabled(true);
  14. mWebView.setWebViewClient(new WebViewClient(){
  15. @Override
  16. public boolean shouldOverrideUrlLoading(WebView view, String url) {
  17. view.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
  18. view.loadUrl(url);
  19. return super.shouldOverrideUrlLoading(view, url);
  20. }
  21. });
  22. }
  23. @Override
  24. public boolean onKeyDown(int keyCode, KeyEvent event) {
  25. if(keyCode==KeyEvent.KEYCODE_BACK){
  26. if(mWebView.canGoBack()){
  27. mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
  28. mWebView.goBack();
  29. return true;
  30. }
  31. }
  32. return false;
  33. }
  34. }

另外记录几个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 ); 




声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/106020
推荐阅读
相关标签
  

闽ICP备14008679号