2013-07-17 22 views
10

我有這個代碼,它的工作原理和唯一的問題是,如果我離開WebView甚至關閉應用程序,甚至按下電話,音頻從播客繼續玩。Android - 當退出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(); 
    } 
+0

我不確定,只是嘗試在退出時清除緩存。在'onPause()'中:'mWebView.clearCache(true); mWebView.getSettings()。setAppCacheEnabled(false);' –

+0

立即嘗試 - 謝謝。將報告幾分鐘後發生的事情:) – Genadinik

+0

它實際上說super.onPageFinished(view,url);未定義類型Activity。你知道需要做些什麼才能使它工作? – Genadinik

回答

24

你應該通過,分別打電話給您的活動的onPause()onResume()WebView's onPause()onResume()

暫停與該web視圖和它的相關聯的 DOM,插件的JavaScript等。例如相關聯的任何額外的處理,如果這web視圖 取離屏,這可以被稱爲以減少不必要的CPU或 網絡流量。當此WebView再次「活動」時,請調用onResume()。


還有pauseTimers(),這會影響你所有的應用程序中的網頁視圖的:

暫停所有的佈局,解析,併爲所有網頁視圖的JavaScript計時器。 這是一個全局請求,並不僅限於此WebView。如果應用程序已暫停,則此 可能很有用。

+0

非常奇怪,它不會自動執行此操作,它似乎只是4.2版之前的Android版本中的一個問題,例如,Youtube音頻會繼續播放,即使您完全關閉了應用程序。 – Roel

+0

您是否可以在此處粘貼您的代碼? – Coder