2013-07-17 9 views
10

Ho questo codice che funziona e l'unico problema è che se esco da WebView e addirittura chiudo l'app, e anche accendo il telefono, l'audio dai podcast continua a giocare.Android - quando si esce da una WebView, l'audio continua a suonare

Qualcuno saprebbe come fermarlo?

Ecco il codice:

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

Non sono sicuro ma provo solo a svuotare la cache all'uscita. In 'onPause()': 'mWebView.clearCache (true); mWebView.getSettings(). setAppCacheEnabled (false); ' –

+0

Provalo ora - grazie. Riferirò di ciò che accade in pochi minuti :) – Genadinik

+0

In realtà dice che super.onPageFinished (view, url); non è definito per il tipo Attività. Sapresti cosa si deve fare per farlo funzionare? – Genadinik

risposta

24

si dovrebbe chiamare fino alla WebView's onPause() e onResume() dalla vostra attività di onPause() e onResume(), rispettivamente.

pause qualsiasi elaborazione aggiuntiva associata a questo WebView e il suo DOM associato, plugin, ecc JavaScript Ad esempio, se questo WebView è preso fuori campo, questo potrebbe essere chiamato a ridurre inutile traffico di rete CPU o. Quando questo WebView è di nuovo "attivo", chiama onResume().


C'è anche pauseTimers(), che colpisce tutti i WebViews all'interno della vostra applicazione:

pause tutto il layout, l'analisi, e timer JavaScript per tutti WebViews. Questa è una richiesta globale, non limitata solo a questa WebView. Questo può essere utile se l'applicazione è stata messa in pausa.

+0

Molto strano che non lo faccia automaticamente, sembra essere solo un problema nelle versioni di Android prima della 4.2 L'audio di Youtube, ad esempio, continua a giocare anche se chiudi completamente la tua app – Roel

+0

Puoi incollare qui il tuo codice? – Coder

Problemi correlati