【问题标题】:Webview Video doesn't stop on Backpress in my android appWebview Video 不会在我的 android 应用程序中的 Backpress 上停止
【发布时间】:2017-08-16 23:42:39
【问题描述】:

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

这是我的代码

    @Override
public void onBackPressed() {

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

【问题讨论】:

标签: android android-webview onbackpressed


【解决方案1】:

用于在后按此代码

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

【讨论】:

    【解决方案2】:

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

    您应该分别从 Activity 的 onPause()onResume() 调用 WebView 的 onPause()onResume()

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-15
        相关资源
        最近更新 更多