20

我有这个有效的代码,唯一的问题是,如果我离开 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();
    }
4

2 回答 2

32

您应该分别调用WebViewonPause()onResume()ActivityonPause()onResume()

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


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

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

于 2013-07-17T02:44:52.847 回答
6

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

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

    super.onDestroyView()
}
于 2019-03-01T13:11:49.770 回答