WebView加载带有视频的网页时,点击视频播放,然后退出,视频总是会还在播放,未能及时结束。
查了很多都没能解决,什么webView的reload()、 onPause、pauseTimer();等方法都不行,有的第一次有效,第二次就无效了,后来又找了尝试,终于找到一个可用的。在此记录,希望帮助那些有同样问题的朋友。
/**
* 当Activity执行onPause()时让WebView执行pause
*/
@Override
protected void onPause() {
super.onPause();
try {
if (mWebView != null) {
mWebView.getClass().getMethod("onPause").invoke(mWebView, (Object[]) null);
isOnPause = true;
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 当Activity执行onResume()时让WebView执行resume
*/
@Override
protected void onResume() {
super.onResume();
try {
if (isOnPause) {
if (mWebView != null) {
mWebView.getClass().getMethod("onResume").invoke(mWebView, (Object[]) null);
}
isOnPause = false;
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 该处的处理尤为重要:
* 应该在内置缩放控件消失以后,再执行mWebView.destroy()
* 否则报错WindowLeaked
*/
@Override
protected void onDestroy() {
super.onDestroy();
if (mWebView != null) {
mWebView.getSettings().setBuiltInZoomControls(true);
mWebView.setVisibility(View.GONE);
long delayTime = ViewConfiguration.getZoomControlsTimeout();
new Timer().schedule(new TimerTask() {
@Override
public void run() {
mWebView.destroy();
mWebView = null;
}
}, delayTime);
}
isOnPause = false;
}
来源:
Android硬件加速以及WebView的onPause,onResume,OnDestroy