问题是:重写了onKeyDown()方法使其goBack(),但是遇到的问题是,每次进入webview再次返回原始页面的时候,中间会有一个闪白的出现。
试了好多网上的方法,发现都是扯淡。
后来意识到,webView 有缓存存在着缓存模式,怎么用不同的缓存模式呢?
//设置缓存模式
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
需要把模式改成LOAD_NO_CACHE!! 但是每次都得重新请求很费资源,于是可以放在onKeyDown()里重新写一个LOAD_NO_CACHE,只在返回时调用无缓存模式
这样就可以在返回前一个页面的时候不刷新出现闪白了 代码:
privatevoidinitView(){webview=(WebView)findViewById(R.id.faq_wv);webview.loadUrl(url);webview.setWebViewClient(newWebViewClient(){@OverridepublicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){view.loadUrl(url);returntrue;}});WebSettingssettings=webview.getSettings();settings.setJavaScriptEnabled(true);settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);}/*改写物理按键返回的逻辑*/@OverridepublicbooleanonKeyDown(intkeyCode,KeyEventevent){if(keyCode==KeyEvent.KEYCODE_BACK&&webview.canGoBack()){//返回上一页面webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);webview.goBack();returntrue;}returnsuper.onKeyDown(keyCode,event);}