在我的 android 应用中,Webview 视频不会在 Backpress 上停止
Webview Video doesn't stop on Backpress in my android app
在我的 android 应用程序中,我想在 WebView 中打开一个网页。
我想打开的网页也包含视频。
为了实现这个功能,我在我的应用程序中使用了 WebChromeClient。问题是,这个 activity 的 onBackPressed(),有些视频没有停止,它们继续在后台播放,尽管我的 WebView activity 已完成。我不知道为什么会这样。我尝试了各种代码,但无法解决这个问题。有些视频会自动停止,但有些会在后台继续播放。如何解决这个问题?
这是我的代码
@Override
public void onBackPressed() {
if (myWebView.canGoBack()) {
myWebView.goBack();
} else {
super.onBackPressed();
}
}
用于在后退时按下此代码
@Override
public void onBackPressed() {
mWebView.stopLoading();
mWebView.removeAllViews();
mWebView.destroy();
mWebView = null;
finish();
super.onBackPressed();
}
参考 - :
您应该分别从 Activity 的 onPause()
和 onResume()
调用 WebView 的 onPause()
和 onResume()
。
暂停与此 WebView 及其关联的 DOM、插件、JavaScript 等相关的任何额外处理。例如,如果此 WebView 处于屏幕外,则可以调用它来减少不必要的 CPU 或网络流量。当这个WebView又是"active"的时候,调用onResume()
。
还有 pauseTimers()
,它会影响应用程序中的所有 WebView:
暂停所有 WebView 的所有布局、解析和 JavaScript 计时器。这是一个全局请求,不仅仅局限于这个 WebView。如果应用程序已暂停,这会很有用。
您可以使用此暂停 webview:-
public void pauseVideo()
{
try {
Class.forName("android.webkit.WebView")
.getMethod("onPause", (Class[]) null)
.invoke(myWebView, (Object[]) null);
} catch(ClassNotFoundException cnfe) {
...
} catch(NoSuchMethodException nsme) {
...
} catch(InvocationTargetException ite) {
...
} catch (IllegalAccessException iae) {
...
}
}
然后在onBackpressed中你可以像这样调用这个方法:-
@Override
public void onBackPressed() {
if (myWebView.canGoBack()) {
pauseVideo();
myWebView.goBack();
} else {
super.onBackPressed();
}
}
在我的 android 应用程序中,我想在 WebView 中打开一个网页。 我想打开的网页也包含视频。 为了实现这个功能,我在我的应用程序中使用了 WebChromeClient。问题是,这个 activity 的 onBackPressed(),有些视频没有停止,它们继续在后台播放,尽管我的 WebView activity 已完成。我不知道为什么会这样。我尝试了各种代码,但无法解决这个问题。有些视频会自动停止,但有些会在后台继续播放。如何解决这个问题?
这是我的代码
@Override
public void onBackPressed() {
if (myWebView.canGoBack()) {
myWebView.goBack();
} else {
super.onBackPressed();
}
}
用于在后退时按下此代码
@Override
public void onBackPressed() {
mWebView.stopLoading();
mWebView.removeAllViews();
mWebView.destroy();
mWebView = null;
finish();
super.onBackPressed();
}
参考 - :
您应该分别从 Activity 的 onPause()
和 onResume()
调用 WebView 的 onPause()
和 onResume()
。
暂停与此 WebView 及其关联的 DOM、插件、JavaScript 等相关的任何额外处理。例如,如果此 WebView 处于屏幕外,则可以调用它来减少不必要的 CPU 或网络流量。当这个WebView又是"active"的时候,调用onResume()
。
还有 pauseTimers()
,它会影响应用程序中的所有 WebView:
暂停所有 WebView 的所有布局、解析和 JavaScript 计时器。这是一个全局请求,不仅仅局限于这个 WebView。如果应用程序已暂停,这会很有用。
您可以使用此暂停 webview:-
public void pauseVideo()
{
try {
Class.forName("android.webkit.WebView")
.getMethod("onPause", (Class[]) null)
.invoke(myWebView, (Object[]) null);
} catch(ClassNotFoundException cnfe) {
...
} catch(NoSuchMethodException nsme) {
...
} catch(InvocationTargetException ite) {
...
} catch (IllegalAccessException iae) {
...
}
}
然后在onBackpressed中你可以像这样调用这个方法:-
@Override
public void onBackPressed() {
if (myWebView.canGoBack()) {
pauseVideo();
myWebView.goBack();
} else {
super.onBackPressed();
}
}