Webview视频不会在我的Android应用程序中停止在Backpress上

时间:2017-03-24 06:17:56

标签: android android-webview onbackpressed

在我的Android应用程序中,我想在WebView中打开一个网页。 我要打开的网页也包含视频。 为了实现这个功能,我在我的应用程序中使用了WebChromeClient。问题是,这个活动的onBackPressed(),虽然我的WebView活动已经完成,但有些视频不会被停止并且它们会继续在后台播放。我不知道为什么会这样。我尝试了各种代码,但无法解决这个问题。有些视频会自动停止播放,但有些视频会在后台播放。如何解决这个问题?

这是我的代码

    @Override
public void onBackPressed() {

    if (myWebView.canGoBack()) {
        myWebView.goBack();
    } else {
        super.onBackPressed();
    }
}

3 个答案:

答案 0 :(得分:0)

使用on on按下此代码

 @Override
public void onBackPressed() {
    mWebView.stopLoading();
    mWebView.removeAllViews();
    mWebView.destroy();
    mWebView = null;
    finish();
    super.onBackPressed();
}

答案 1 :(得分:0)

参考 - https://stackoverflow.com/a/17690221/3032209

您应该分别从您的活动onPause()onResume()拨打WebView的onPause()onResume()

暂停与此WebView及其关联的DOM,插件,JavaScript等相关的任何额外处理。例如,如果此WebView被取消屏幕,则可以调用此方法以减少不必要的CPU或网络流量。当此WebView再次“活动”时,请致电onResume()。 还有pauseTimers(),它会影响应用程序中的所有WebView:

暂停所有WebView的所有布局,解析和JavaScript计时器。这是一个全局请求,不仅限于此WebView。如果应用程序已暂停,这可能很有用。

答案 2 :(得分:0)

您可以使用以下方法暂停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();
    }
}