How to clear webview history?

前端 未结 3 1587
青春惊慌失措
青春惊慌失措 2020-12-08 14:22

The history of webview is not clearing... What is wrong with below code?

Web view Creation

mWebViewReport=(WebView)findViewById(R.id.report_page);
mW         


        
相关标签:
3条回答
  • 2020-12-08 14:30

    The solution from Osama_Almaani works very fine! You can optimize your code by moving the flag into the WebViewClient implementation.

    Define a field in your activity and use this instead of the anonymous declaration:

    private MyWebViewClient myWebViewClient = new MyWebViewClient();
    ...
    myWebView.setWebViewClient(myWebViewClient);
    

    Enhance your WebViewClient class with a new method clearHistory():

    private class MyWebViewClient extends WebViewClient {
      private boolean clearHistory = false;
    
      /**Use this instead of WebView.clearHistory(). */
      public void clearHistory(){
        clearHistory = true;
        }
    
      @Override
      public void onPageFinished(WebView view, String url) {
        if(clearHistory){
          Log.d(TAG, "clearHistory now");
          clearHistory = false;
          myWebView.clearHistory();
        }
        super.onPageFinished(view, url);
        }
    }
    

    Now you can use this new method:

    myWebViewClient.clearHistory();
    mWebViewReport.loadUrl("file:///android_asset/help.html");
    
    0 讨论(0)
  • 2020-12-08 14:35

    I think, clearHistory() clears the back and forward list. So the currently loaded url will still remain in the back list.

    0 讨论(0)
  • 2020-12-08 14:49

    You can't clear history while the webview is loading a page (url) in order to clear the history setup onPageFinished listener as follows

    declare a public var before the onCreate

    boolean clearHistory = false;
    

    now when you declare your mWebViewReport set this up

    mWebViewReport.setWebViewClient(new WebViewClient(){
    
        @Override
        public void onPageFinished(WebView view, String url) 
        {
            if (clearHistory)
            {
                clearHistory = false;        
                mWebViewReport.clearHistory();
            }
                super.onPageFinished(view, url);
        }
    });
    

    Now when you call your help url insted of clearing the history just set clearHistory to true

    mWebViewReport.loadUrl("file:///android_asset/help.html");
    mWebViewReport.clearHistory();  // REMOVE THIS LINE
    mWebViewReport.clearCache(true); // REMOVE THIS LINE
    clearHistory = true; // ADD THIS LINE
    
    0 讨论(0)
提交回复
热议问题