2013-07-17 6 views
10

Ich habe diesen Code, der funktioniert und das einzige Problem damit ist, dass, wenn ich das WebView verlassen und sogar die App schließen, und drücken Sie sogar auf das Telefon, das Audio von den Podcasts spielt weiter.Android - beim Beenden eines WebView, das Audio immer noch spielt

Würde jemand wissen, wie man das stoppt? Hier

ist der Code:

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

Ich bin mir nicht sicher, aber versuchen Sie einfach, den Cache beim Beenden zu löschen. In 'onPause()': 'mWebView.clearCache (true); mWebView.getSettings(). setAppCacheEnabled (false); ' –

+0

Probieren Sie es jetzt aus - danke. Werde zurück melden, was in ein paar Minuten passiert :) – Genadinik

+0

Es heißt eigentlich, dass super.onPageFinished (view, url); ist für den Typ Aktivität nicht definiert. Würdest du wissen, was getan werden muss, damit es funktioniert? – Genadinik

Antwort

24

Sie sollten onPause() zum WebView's onPause() und onResume() von Ihrer Aktivität nennen durch und onResume() sind.

Bricht jede zusätzliche Verarbeitung mit diesem WebView zugeordnet und seine zugeordnet DOM, Plugins, JavaScript etc. Zum Beispiel wenn diese WebView offscreen gemacht wird, könnte dies genannt werden, um unnötige CPU oder Netzwerkverkehr zu reduzieren. Wenn dieses WebView wieder "aktiv" ist, rufen Sie onResume() auf.


Es gibt auch pauseTimers(), die alle der WebViews in Ihrer Anwendung betrifft:

Bricht alle Layout, Parsen und JavaScript-Timer für alle WebViews. Dies sind globale Anforderungen, die nicht auf diese WebView beschränkt sind. Diese kann nützlich sein, wenn die Anwendung pausiert wurde.

+0

Sehr seltsam, dass es das nicht automatisch macht. Es scheint nur ein Problem in Android-Versionen vor 4.2 zu sein. Youtube Audio zum Beispiel spielt weiter, selbst wenn Sie Ihre App komplett schließen. – Roel

+0

Könnten Sie bitte Ihren Code hier einfügen? – Coder

Verwandte Themen