【问题标题】:WebView.onPause() for API level 10API 级别 10 的 WebView.onPause()
【发布时间】:2014-07-31 12:49:31
【问题描述】:

我目前正在 WebView 中打开一个 youtube 频道。 它加载一切正常,我可以毫无问题地播放频道视频。 但是当我向后导航时,包含 WebView 的 Fragment 被删除,音频继续播放。

为了防止这种情况,我在 Fragments onPause() 中调用 WebViews onPause(),如下所示:

@Override
public void onPause() {
    super.onPause();
    webView.onPause();
}

这就像一个魅力。 但我的问题是 WebView.onPause() 仅适用于 API 11 及更高版本。但我的应用必须是最低 API 10 ... 所以我的问题是:如何停止所有 API 级别的音频播放?

【问题讨论】:

    标签: android video webview youtube fragment


    【解决方案1】:

    假设您在 Fragment 中只有一个 WebView,使用以下代码暂停 Fragment 中的 ALL 个 WebView:

    // In the Fragment's onPause
    @Override
    public void onPause(){
    
        super.onPause();
    
        // Check if WebView is null first since onPause can occasionally get called before all your views are initialized
        if(mWebView != null) {
    
            if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB){
    
                mWebView.onPause(); // Normal onPause for versions greater than or equal to API 11
    
            }
    
            mWebView.pauseTimers(); // This does the same thing as onPause but does it for all the WebViews, it works on all API levels
        }
    
    }
    

    让我知道它是否适合您。应该,但是 WebView 可能很挑剔,并且并不总是按照您希望的方式运行。

    【讨论】:

      【解决方案2】:

      我认为你需要改变

      webView.onPause 
      

      到:

      this.callHiddenWebViewMethod("onPause");
      

      【讨论】:

      • 这是自定义函数吗?因为我不能在 Activity、Fragment 或 WebView 上调用它。
      • 这是习俗吗?
      猜你喜欢
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      相关资源
      最近更新 更多