1、初始化
settings = webView.getSettings();
webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
因为是在之前的基础上修改的,不确定之前设置的属性是否有影响,下面把其他属性也附带展示:
settings.setDomStorageEnabled(true);
settings.setLoadsImagesAutomatically(true);
settings.setAppCacheEnabled(true);
settings.setJavaScriptEnabled(true);
settings.setLoadWithOverviewMode(true);
settings.setUseWideViewPort(true);
settings.setBlockNetworkImage(true);
settings.setDefaultTextEncodingName("utf-8"); // 设置文本编码
在onResume()中
try {
if (isOnPause) {
if (webView != null) {
webView.getClass().getMethod("onResume").invoke(webView, (Object[]) null);
}
isOnPause = false;
}
} catch (Exception e) {
e.printStackTrace();
}
super.onResume();
在onPause()中
try {
if (webView != null) {
webView.getClass().getMethod("onPause").invoke(webView, (Object[]) null);
isOnPause = true;
}
} catch (Exception e) {
e.printStackTrace();
}
super.onPause();
在onDestroy()中
try {
if (webView != null) {
webView.getSettings().setBuiltInZoomControls(true);
webView.destroy();
//webView.setVisibility(View.GONE);
//long delayTime = ViewConfiguration.getZoomControlsTimeout();
//new Timer().schedule(new TimerTask() {
//@Override
//public void run() {
//webView.destroy();
//webView = null;
//}
//}, delayTime);
}
isOnPause = false;
} catch (Exception e) {
e.printStackTrace();
}
super.onDestroy();
注:
onDestory中被注释掉的,//webView.destroy();这句话,会在我用的测试手机上报异常
java.lang.Throwable: A WebView method was called on thread 'Timer-0'. All WebView methods must be called on the same thread. (Expected Looper Looper (main, tid 1) {70e4402} called on null, FYI main Looper is Looper (main, tid 1) {70e4402})
但是,这句话,是之前一个博客上写的,那个博客上用的是注释掉的那几句。不知道为什么,我用了被注释那几句就不行。只有把webView.destroy()提到外面,才正常。2种方法,看情况而定。
以下是测试webView播放视频手机,均正常
测试手机基本数据
品牌 型号 Android版本
三星 SM-A7000 4.4.4
小米 MI NOTE LTE 6.0.1(MIUI版本:8.1稳定版)
vivo X6D 5.1
测试流程:
1、从一个activity,打开webView所在activity,点击上面的视频播放
2、视频播放过程中,点击home键,视频暂停、语音停止,再回去,视频处于暂停状态,需要手动点击开启继续播放
3、视频播放过程中,点击锁屏键,视频暂停、语音停止,开屏,视频处于暂停状态,需要手动点击开启继续播放
4、点击返回键,webView所在activity被finish,停留在上一个activity一会,没有发现崩溃。继续操作app正常。(如果用了onDestory中的被注释掉的timer方法去调用webView的销毁。点击返回键,回到上一个activity后,3秒左右,会崩溃。所报异常就是上面那个)