我有一个托管嵌入视频的WebView。当我降级Webview时,视频的声音继续播放。我怎么能阻止这个?我确实尝试webview.destroy();
,但当我再次尝试打开WebView时,该强制关闭应用程序。
答案 0 :(得分:6)
您必须为此目的调用WebView的onPause()
和onResume()
方法。您通常在活动的onPause()
和onResume()
上执行此操作,但每当您以某种方式隐藏WebView时,您也可以执行此操作,并且其内容也会停止执行他们正在执行的操作,例如运行Javascript或播放HTML5视频。
如果您需要在11级之前的API级别中使用这些方法,则可以使用以下反射:WebView.class.getMethod("onPause").invoke(myWebView);
答案 1 :(得分:4)
我认为“当我降低Webview时”是关闭视图的时候。 无论如何,我也尝试了同样的方法 - 调用webview.destroy(),并遇到了和你一样的崩溃。
唯一有效的方法是调用_webView.loadData(“”,“text / html”,“utf-8”);来自我的活动finish()方法。
(基于这个答案:How do I stop Flash after leaving a WebView?由于onDestroy直到很久之后才被调用,因此无效。{/ p>
答案 2 :(得分:0)
你是什么意思:“当我降低网络视图时,视频的声音继续播放”。
这是自定义应用吗?如果是这样,您需要使用android:hardwareAccelerated = true构建您的应用清单文件(假设您在ICS或JB上执行此操作)。如果没有硬件加速,你只会听到音频,但视频无法看到(这听起来就像你看到的那样)。以下是有关更改清单文件的一些信息: http://developer.android.com/guide/topics/graphics/hardware-accel.html
答案 3 :(得分:0)
您还可以执行Java脚本以暂停onPause生命周期回调活动的视频/音频,在下面的示例中我已经为音频完成了它(它工作)。希望将“音频”改为“视频”可以帮到你。
@Override
protected void onPause() {
executeJavascript("javascript:document.querySelector('audio').pause();", new ValueCallback() {
@Override
public void onReceiveValue(Object value) {
Trace.d(TAG, value.toString());
}
});
super.onPause();
}
和
private void executeJavascript(String javascript, ValueCallback callback){
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
mWebView.evaluateJavascript(javascript, callback);
} else {
mWebView.loadUrl(javascript);
}
}