webview使用注意問題

  • WebViewClient.onPageFinished()。你永遠無法確定當WebView調用這個方法的時候,網頁內容是否真的加載完畢了。當前正在加載的網頁產生跳轉的時候這個方法可能會被多次調用,StackOverflow上有比較具體的解釋(How to listen for a Webview finishing loading a URL in Android?), 但其中列舉的解決方法並不完美。所以當你的WebView需要加載各種各樣的網頁並且需要在頁面加載完成時採取一些操作的話,可能WebChromeClient.onProgressChanged()比WebViewClient.onPageFinished()都要靠譜一些。
  • WebView後臺耗電問題。當你的程序調用了WebView加載網頁,WebView會自己開啓一些線程(?),如果你沒有正確地將WebView銷燬的話,這些殘餘的線程(?)會一直在後臺運行,由此導致你的應用程序耗電量居高不下。對此我採用的處理方式比較偷懶,簡單又粗暴(不建議),即在Activity.onDestroy()中直接調用System.exit(0),使得應用程序完全被移出虛擬機,這樣就不會有任何問題了。
  • 切換WebView閃屏問題。如果你需要在同一個ViewGroup中來回切換不同的WebView(包含了不同的網頁內容)的話,你就會發現閃屏是不可避免的。這應該是Android硬件加速的Bug,如果關閉硬件加速這種情況會好很多,但無法獲得很好的瀏覽體驗,你會感覺網頁滑動的時候一卡一卡的,不跟手。
  • 數據積累問題。開啓緩存什麼的有利於網頁的瀏覽體驗,但你會發現即使是清除了必要的內容,比如Cache、Cookie、Form Data、History、Password等等東西,你的應用程序所佔用的存儲空間還是會越來越大,到最後只好手動到系統設置的應用信息界面裏清除數據了 :(
  • 滾動條問題。Android System WebView的橫向滾動條真是好粗的有木有…
  • 在某些手機上,Webview有視頻時,activity銷燬後,視頻資源沒有被銷燬,甚至還能聽到在後臺播放。即便是像剛纔那樣各種銷燬webview也無濟於事,解決辦法:在onDestory之前修改url爲空地址。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章