2017-01-06 26 views
0

想要問一些關於在Android上啓用和禁用web視圖的最佳實現方式的建議嗎?在Android中啓用/禁用webview的最佳做法

我有這個應用程序,它可以打開(通過使用網絡視圖),然後彈出並覆蓋80%的用戶界面,當用戶導航到應用程序的另一頁時,它應該隱藏/關閉網頁視圖但在需要時可以重新打開。

下面的代碼

private WebViewInterface webViewInterface = new WebViewInterface() { 
    @Override 
    public void onOpenURL(String url) { 
     navBrowserWV.setVisibility(View.VISIBLE); 
     navBrowserWV.getSettings().setJavaScriptEnabled(true); 
     navBrowserWV.setWebViewClient(new WebViewClient() { 
      @Override 
      public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){ 
       handler.proceed(); 
      } 
     }); 
     navBrowserWV.loadUrl(url); 
    } 
}; 

的片段,那麼這是怎麼關閉它

private void closeWebView() { 
    Log.d(LOGTAG, "closing webview..."); 

    // Destroy WebView if it exists 
    if (this.navBrowserWV != null) { 
     this.navBrowserWV.stopLoading(); 
     this.navBrowserWV.loadUrl("about:blank"); 
     this.navBrowserWV.clearHistory(); 
     this.navBrowserWV.clearCache(true); 
     this.navBrowserWV.pauseTimers(); 
     this.navBrowserWV.setVisibility(View.GONE); 
    } 
} 

這種實現的問題是,它可以正確顯示頁面在第一,但是當我關閉然後再用網址打開網頁視圖,它不會再加載頁面,只是一個白色背景(記錄器btw沒有錯誤)。

想請教如何解決這個問題。謝謝

回答

0

最後,在互聯網上搜索了很長時間的答案後,我發現這篇關於殺死Android webview [link]的舊帖子。

沒有真正的殺死WebView的方法(它會一直運行在你的程序中,你無法對ATM做任何事情)。所以,你只需要告訴的WebView加載網頁仿冒,對我來說我所做的: this.navBrowserWV.loadUrl("about:blank");

和它的作品吧!從網站

4.1 .getSettings().setJavaScriptEnabled() Inhalt 

報價,你會認爲在的WebView設置禁用JavaScript的將有即時效果,總之:沒有。只有在重新加載頁面之後纔會再沒有javascript了,而且這種設計並不好,因爲頁面或多或少地呈現出來。

4.2 .stopLoading() Inhalt 

由於XHR「加載」從另一臺服務器上的東西,你可能會認爲調用「webview.stopLoading()」將產生效果。簡而言之:它沒有。僅適用於HTML文件中包含的資源。可惜,是不是......呃,也許不是,因爲無論如何都沒有「startLoading()」方法來恢復XHR。

4.3 .destroy() Inhalt 

作爲最後的手段人們可能會想到「消滅()」荷蘭國際集團說事兒,夠真實,web視圖本身並不之後訪問。但是它的線程繼續殭屍在廣闊的RAM空間的某個地方,也繼續發送XHR請求......

4.4 .pauseTimers()/resumeTimers() Inhalt 

簡而言之:不,不工作。我甚至不知道這些方法對於控制JavaScript定時器是否有好處。沒有任何簡單的HTML,AFAIK。

更新:當涉及到只定時器,這些功能似乎在2.3.5工作,向上,但是,當沒有計時器在調用該函數,一切都是徒勞的時間活躍。用我的用例:當有一個XHR活動時(而不是計劃下一個XHR調用的運行計時器)暫停應用程序時,沒有任何事情發生,並且下一個計時器不受阻礙地繼續。

我希望這能幫助那些和我一樣有問題的人。