Android WebView頁面結束後視訊播放還有聲音問題處理
阿新 • • 發佈:2018-12-30
WebView載入帶有視訊的網頁時,點選視訊播放,然後退出,視訊總是會還在播放,未能及時結束。
查了很多都沒能解決,什麼webView的reload()、 onPause、pauseTimer();等方法都不行,有的第一次有效,第二次就無效了,後來又找了嘗試,終於找到一個可用的。在此記錄,希望幫助那些有同樣問題的朋友。
來源:/** * 當Activity執行onPause()時讓WebView執行pause */ @Override protected void onPause() { super.onPause(); try { if (mWebView != null) { mWebView.getClass().getMethod("onPause").invoke(mWebView, (Object[]) null); isOnPause = true; } } catch (Exception e) { e.printStackTrace(); } } /** * 當Activity執行onResume()時讓WebView執行resume */ @Override protected void onResume() { super.onResume(); try { if (isOnPause) { if (mWebView != null) { mWebView.getClass().getMethod("onResume").invoke(mWebView, (Object[]) null); } isOnPause = false; } } catch (Exception e) { e.printStackTrace(); } } /** * 該處的處理尤為重要: * 應該在內建縮放控制元件消失以後,再執行mWebView.destroy() * 否則報錯WindowLeaked */ @Override protected void onDestroy() { super.onDestroy(); if (mWebView != null) { mWebView.getSettings().setBuiltInZoomControls(true); mWebView.setVisibility(View.GONE); long delayTime = ViewConfiguration.getZoomControlsTimeout(); new Timer().schedule(new TimerTask() { @Override public void run() { mWebView.destroy(); mWebView = null; } }, delayTime); } isOnPause = false; }