Android使用WebView瀏覽有聲音或者視頻的網頁,關閉WebView之后,聲音或者視頻不停止的解決辦法
來源:程序員人生 發布時間:2015-01-06 08:36:12 閱讀次數:6613次
<span style="font-family: Arial, Helvetica, sans-serif;"> 筆者最近使用Eclipse開發Android移動利用app,其實有1個功能是使用Android系統自帶的WebView控件加載Web頁面。開發很順利,閱讀也很正常。不過有個比較特殊的1點就是加載的Web頁面中有聲音或視頻。在包括WebView的Activity被Finish以后。聲音或視頻依然在后臺播放,聲音也不停止。再1次打開Activity以后,會重復的播放聲音或視頻。</span>
此問題絕對是不能夠容忍的,因而上網搜索,這1搜索不要緊,原來遇到此問題的網友還不止筆者1人。查了1番以后發現,原來此問題應當歸屬于Android的bug,不太好修改。對包括視頻的網頁,可以下面的方法解決:
protected void onPause() {
super.onPause();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
webView.onPause(); // 暫停網頁中正在播放的視頻
}
}
但是此代碼對聲音是無能為力。在網上搜索了很長時間,解決辦法也很多,如:
web.pauseTimers();
web.stopLoading();
web.loadData("<a></a>", "text/html", "utf⑻");
Intent i = new Intent("com.android.music.musicservicecommand");
i.putExtra("command", "pause");
mContext.sendBroadcast(i);
web.loadData("about:blank");
以上方法,經過筆者測試,均不好用。
后來經過量次測試,發現1個規律,就是在finish之前,Activity被重新載的頁面地址是啥,下次打開以后,還顯示甚么頁面(由于筆者使用:web.loadData("about:blank");方法測試時,發現下次打開時,顯示的是空白頁面,開始以為是頁面沒有加載成功,后來無意中靈機1動,會不會是關閉之前加載的頁面,下次打開時還是加載哪一個呢?)。后來測試了1下,關閉之前加載了1下百度頁面,發現下次打開時,還真是顯示的百度百度頁面。那就將錯就錯,直接重新加載當前頁面地址,不就ok了嗎。1試,還真可以。聲音或視頻停止了,下次打開,頁面也能夠正常加載了。真是得來全不廢工夫。
解決辦法以下:
@Override
protected void onPause ()
{
m_WebView.reload ();
super.onPause ();
}
m_WebView為Activity中的WebView控件。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈