Android - 退出WebView时,音频仍然在播放

Gen*_*nik 13 android android-webview

我有这个代码可以工作,唯一的问题是,如果我离开WebView甚至关闭应用程序,甚至按下手机上的电源,播客的音频一直在播放.

谁会知道如何阻止它?

这是代码:

public class PodcastsActivity extends BaseActivity //implements ActionBar.OnNavigationListener 
{    
    WebView webview = null;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        //setTheme(R.style.Theme_Sherlock_Light);
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.podcasts);


        webview = new WebView(this);
        webview.getSettings().setAppCacheEnabled(false);
        webview.getSettings().setJavaScriptEnabled(true);
        webview.setInitialScale(1);
        webview.getSettings().setPluginState(PluginState.ON);

        webview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });




        //webSettings.setBuiltInZoomControls(true);


        WebSettings webSettings = webview.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setBuiltInZoomControls(true);
        //webSettings.getMediaPlaybackRequiresUserGesture();
        webSettings.setAllowContentAccess(true);
        webSettings.setEnableSmoothTransition(true);
        webSettings.setLoadsImagesAutomatically(true);
        webSettings.setLoadWithOverviewMode(true);
        webSettings.setSupportZoom(true);
        webSettings.setUseWideViewPort(true);

        setContentView(webview);
        webview.loadUrl("http://www.stitcher.com/podcast/entrepreneuronfirecom/entrepreneur-on-fire-tim-ferriss-other-incredible-entrepreneurs");           

    }

//  public void onBackPressed ( )
//  {
//      Class.forName("com.***.HTML5WebView").getMethod("onPause", (Class[]) null).
//      invoke(html5WebView, (Object[]) null);
//  }


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) 
    {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) 
        {
            webview.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }       

    @Override
    public void onStop()
    {
       super.onStop();
       // your code

       webview.clearView();
    }
Run Code Online (Sandbox Code Playgroud)

qui*_*int 27

您应该分别调用WebViewonPause()onResume()Activity onPause()以及onResume().

暂停与此WebView及其关联的DOM,插件,JavaScript等相关的任何额外处理.例如,如果此WebView从屏幕上移除,则可以调用此方法以减少不必要的CPU或网络流量.当此WebView再次"活动"时,请调用onResume().


还会pauseTimers()影响应用程序中的所有WebView:

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


Gre*_*nis 5

接受的答案对我不起作用 - 仅onPause在片段中使用不足以在 Android 9 上停止音乐。我还必须这样做:

override fun onDestroyView() {
    webview?.destroy()

    super.onDestroyView()
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这仅适用于 Android 11 - 当片段被破坏时音频停止。但是,当片段/活动暂停时,例如当用户按下主页按钮时,如何停止音频? (2认同)