在 ViewPager 中带有视频的 WebView 即使在水平滚动后也会继续播放音频

WebView with Video In a ViewPager keeps playing audio even after scrolling horizontally

我有一个 Activity,其中 ViewPager 包含一个 WebView,其中 TextVideo。当我播放视频并按下后退时,音频仍在播放。然后我做了

@Override
public void onPause() {
    super.onPause();
    if(webView != null) {
        webView.onPause();
    }
}

@Override
public void onResume() {
    super.onResume();
    if (webView != null) {
        webView.onResume();
    }
}

但是当我在 ViewPager 中滑动到下一个时,新的 url 正在加载到 WebView 中,但音频仍在播放上一个 WebView 中的音频。有谁知道这个问题的解决方案吗?

编辑:

解决方案

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (webView != null) {
        if (isVisibleToUser) {
            webView.reload();
        } else {
            webView.onPause();
        }
    }
}

你一定要试试

webView.destroy();

方法可能有效。

片段的 onPause() 未被调用,因为片段未在视图中获得 destroyed/paused(除非它超出屏幕外限制)pager.So 您必须检查片段是否可见与否。

您可以这样做:

public class MyFragment extends Fragment {
  @Override
  public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser) {
//visible to user }

    else {  
//not visible

}
      }
    }

然后用你的 webview 执行你想要的任何操作。

将 onPageChangeListener 添加到您的 viewpager。

/* in onViewCreated */
ViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override
    public void onPageSelected(int position) {
        //here get the webview of the previous page and do on pause.
        if (webview of prev page position is active)
          webview of perv position.onPause();
        //resume the webView if it was previously paused
        if (webView was previously paused )
           webView of position.onResume();
    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }
});

您必须填写算法。 希望这有帮助