1.为什么Webview打开一个页面,播放一段音乐,退出Activity时音乐还在后台播放?
//销毁Webview,解决
@Override
protectedvoidonDestroy(){
if (mWebview != null) {
mWebview.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
mWebview.clearHistory();
((ViewGroup) mWebview.getParent()).removeView(mWebview);
mWebview.destroy();
mWebview = null;
}
super.onDestroy();
}
2.为什么打包之后JS调用失败(或者WebView与JavaScript相互调用时,如果是debug没有配置混淆时,调用时没问题的,但是当设置混淆后发现无法正常调用了)?
-keepattributes *Annotation*
-keepattributes *JavascriptInterface*
-keep public classorg.mq.study.webview.DemoJavaScriptInterface{
public ;
}
#假如是内部类,混淆如下:
-keepattributes *JavascriptInterface*
-keep public classorg.mq.study.webview.webview.DemoJavaScriptInterface$InnerClass{
public ;
}
3. 5.0 以后的WebView加载的链接为Https开头,但是链接里面的内容,比如图片为Http链接,这时候,图片就会加载不出来,怎么解决?
原因是Android 5.0上Webview默认不允许加载Http与Https混合内容:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//两者都可以
webSetting.setMixedContentMode(webSetting.getMixedContentMode());
//mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
参数说明:
MIXED_CONTENT_ALWAYS_ALLOW 允许从任何来源加载内容,即使起源是不安全的;
MIXED_CONTENT_NEVER_ALLOW 不允许Https加载Http的内容,即不允许从安全的起源去加载一个不安全的资源;
MIXED_CONTENT_COMPLTIBILITY_MODE 当涉及到混合式内容时,WebView会尝试去兼容最新Web浏览器的风格;
4. WebView调用手机系统相册来上传图片,开发过程中发现在很多机器上无法正常唤起系统相册来选择图片。怎么解决?
因为Google攻城狮们对setWebChromeClient的回调方法openFileChooser做了多次修改,5.0以下openFileChooser有几种重载方法,在5.0以上将回调方法该为了onShowFileChooser。
http://blog.csdn.net/xiexie758/article/details/52446937
5.WebView 开启硬件加速导致的问题?
WebView开启硬件加速导致屏幕花屏问题的解决:
原因分析:
4.0以上的系统我们开启硬件加速后,WebView渲染页面更加快速,拖动也更加顺滑。但有个副作用就是,当WebView视图被整体遮住一块,然后突然恢复时(比如使用SlideMenu将WebView从侧边滑出来时),这个过渡期会出现白块同时界面闪烁。
6.ViewPager里非首屏WebView点击事件不响应是什么原因?
如果你的多个WebView是放在ViewPager里一个个加载出来的,那么就会遇到这样的问题。ViewPager首屏WebView的创建是在前台,点击时没有问题;而其他非首屏的WebView是在后台创建,滑动到它后点击页面会出现如下错误日志:
20955-20968/xx.xxx.xxx E/webcoreglue﹕ Shouldnothappen:norect-based-test nodes found
解决方案:
这个问题的办法是继承WebView类,在子类覆盖onTouchEvent方法,填入如下代码:
@Override
publicbooleanonTouchEvent(MotionEvent ev){
if(ev.getAction() == MotionEvent.ACTION_DOWN) {
onScrollChanged(getScrollX(), getScrollY(), getScrollX(), getScrollY());
}
returnsuper.onTouchEvent(ev);
}
关于WebView的一点小优化
加快HTML网页加载完成的速度,等页面finish再加载图片
自定义WebView页面加载出错界面
怎么知道WebView是否存在滚动条?
怎么知道WebView是否已经滚动到页面底端?
网友评论