2013-07-17 32 views
10

Tôi có mã này hoạt động và vấn đề duy nhất với nó là nếu tôi rời khỏi WebView và thậm chí đóng ứng dụng và thậm chí nhấn nguồn trên điện thoại, âm thanh từ các podcast tiếp tục phát.Android - khi thoát khỏi WebView, âm thanh vẫn tiếp tục phát

Có ai biết cách dừng điều đó không?

Đây là mã:

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

Tôi không chắc chắn nhưng chỉ cố gắng xóa bộ nhớ cache khi thoát. Trong 'onPause()': 'mWebView.clearCache (true); mWebView.getSettings(). setAppCacheEnabled (false); ' –

+0

Thử ngay bây giờ - cảm ơn bạn. Sẽ báo cáo lại với những gì sẽ xảy ra trong một vài phút :) – Genadinik

+0

Nó thực sự nói rằng super.onPageFinished (xem, url); không được xác định cho loại Hoạt động. Bạn có biết những gì cần phải được thực hiện để làm cho nó hoạt động? – Genadinik

Trả lời

24

Bạn nên gọi thông qua các WebView's onPause()onResume() từ Hoạt động của bạn onPause()onResume(), tương ứng.

tạm dừng bất kỳ chế biến phụ liên quan WebView này và DOM liên quan, bổ sung, vv Javascript Ví dụ, nếu WebView này được lấy offscreen, điều này có thể được gọi để giảm CPU không cần thiết hoặc lưu lượng mạng. Khi WebView này một lần nữa "hoạt động", gọi onResume().


Ngoài ra còn có pauseTimers(), mà ảnh hưởng đến tất cả các WebViews bên trong ứng dụng của bạn:

tạm dừng tất cả các bố trí, phân tích, và giờ JavaScript cho tất cả WebViews. Đây là một yêu cầu toàn cầu, không bị giới hạn chỉ với WebView này. Điều này có thể hữu ích nếu ứng dụng đã bị tạm dừng.

+0

Rất lạ là nó không tự động thực hiện điều này, có vẻ như chỉ là vấn đề trong các phiên bản Android trước 4.2. Âm thanh Youtube chẳng hạn vẫn tiếp tục phát ngay cả khi bạn đóng ứng dụng hoàn toàn – Roel

+0

Bạn có thể dán mã của mình ở đây không? – Coder

Các vấn đề liên quan