Android 使用WebView瀏覽有聲音或者視頻的網頁,關閉WebView之後,聲音或者視頻不停止的解決辦法

來源:互聯網
上載者:User

標籤:一點   載入   and   控制項   dbr   time   webview   ice   使用   

筆者最近使用Eclipse開發Android行動裝置 Appapp,其實有一個功能是使用Android系統內建的WebView控制項載入Web頁面。開發很順利,瀏覽也很正常。不過有個比較特殊的一點就是載入的Web頁面中有聲音或者視頻。在包括WebView的Activity被Finish之後。聲音或者視頻仍然在背景播放,聲音也不停止。再一次開啟Activity之後,會重複的播放聲音或者視頻。

此問題絕對是不能夠容忍的,於是上網搜尋,這一搜尋不要緊,原來遇到此問題的網友還不止筆者一人。查了一番之後發現,原來此問題應該歸屬於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-8");
Intent i = new Intent("com.android.music.musicservicecommand"); i.putExtra("command", "pause"); mContext.sendBroadcast(i);
web.loadData("about:blank");

以上方法,經過筆者測試,均不好用。

後來經過多次測試,發現一個規律,就是在finish之前,Activity被重新載的頁面地址是啥,下次開啟之後,還顯示什麼頁面(因為筆者使用:web.loadData("about:blank");方法測試時,發現下次開啟時,顯示的是空白頁面,開始以為是頁面沒有載入成功,後來無意中靈機一動,會不會是關閉之前載入的頁面,下次開啟時還是載入哪個呢?)。後來測試了一下,關閉之前載入了一下百度頁面,發現下次開啟時,還真是顯示的百度百度頁面。那就將錯就錯,直接重新載入當前頁面地址,不就ok了嗎。一試,還真可以。聲音或者視頻停止了,下次開啟,頁面也能夠正常載入了。真是得來全不廢功夫。

解決辦法如下:

@Overrideprotected void onPause (){    m_WebView.reload ();    super.onPause ();}

m_WebView為Activity中的WebView控制項。

Android 使用WebView瀏覽有聲音或者視頻的網頁,關閉WebView之後,聲音或者視頻不停止的解決辦法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.