現(xiàn)象:
同一webview頁面,加載完成后在小米手機上可正常返回,即canGoBack為false,直接調(diào)用super.onBackPress方法退出activity;而華為、oppo(目前已知)機型上,會出現(xiàn)canGoBack為true的情況,此時按下返回鍵會重新加載頁面,用戶體驗很差。
分析:
1、經(jīng)過debug檢查,異常機型上頁面加載會回調(diào)到shouldOverrideUrlLoading方法,由此判斷可能是由于頁面初始化發(fā)生了重定向導致的問題;
2、經(jīng)過分析H5頁面,發(fā)現(xiàn)頁面加載時使用了window.location.replace方法,測試后發(fā)現(xiàn)在華為OV流手機上會被識別為跳轉了新頁面,即canGoback會返回true,造成返回時重復加載頁面的問題。
解決方案:
1、讓H5大佬修改下實現(xiàn),避免使用replace(廢話)
2、在onBackPress中判斷當前加載的url和webview初始化時的url是否一致,如一致即代表目前實際處在頂層頁面,不調(diào)用goback方法即可。