2013-07-17 12 views
10

Mam ten kod, który działa i jedynym problemem jest to, że jeśli opuszczę WebView, a nawet zamknę aplikację, a nawet naciśnij zasilanie telefonu, dźwięk z podcastów gra dalej.Android - po wyjściu z WebView, dźwięk nadal gra

Czy ktoś wie, jak to zatrzymać?

Oto kod:

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

Nie jestem pewien, ale po prostu spróbuj wyczyścić pamięć podręczną przy wyjściu. W 'onPause()': 'mWebView.clearCache (true); mWebView.getSettings(). setAppCacheEnabled (false); ' –

+0

Spróbuj teraz - dziękuję. Opowiem o tym, co stanie się za kilka minut :) – Genadinik

+0

To rzeczywiście mówi, że super.onPageFinished (view, url); jest niezdefiniowany dla typu Activity. Czy wiesz, co należy zrobić, aby działało? – Genadinik

Odpowiedz

24

Należy zadzwonić aż do WebView's onPause() i onResume() ze swoją aktywność na onPause() i onResume() odpowiednio.

Wstrzymuje żadnych dodatkowych produkcyjne związane z tym WebView i jego związanego DOM, JavaScript, wtyczki itp Na przykład, jeśli ten WebView zostanie podjęta poza ekranem, to może być wywołana w celu zmniejszenia niepotrzebnego CPU lub ruch sieciowy. Kiedy ta WebView ponownie będzie "aktywna", wywołaj onResume().


Jest też pauseTimers(), która dotyka wszystkich WebViews wewnątrz aplikacji:

Wstrzymuje cały układ, analizowania i liczniki JavaScript dla wszystkich WebViews. To jest globalna prośba, nie ogranicza się tylko do tego WebView. Ten może być przydatny, jeśli aplikacja została wstrzymana.

+0

Bardzo dziwne, że nie robi tego automatycznie.Jest to chyba tylko problem w wersjach Androida przed 4.2. Przykładowo, audio z Youtube nadal gra, nawet jeśli całkowicie zamkniesz aplikację – Roel

+0

Czy mógłbyś wkleić tutaj swój kod? – Coder

Powiązane problemy