Calculating data downloaded by webview for a given url by using webview client?

╄→гoц情女王★ 提交于 2021-02-04 16:28:27

问题


I'm trying to calculate the data downloaded in my WebView. Following is my WebViewClient

WebViewClient mWebViewClient = new WebViewClient() {

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            Log.e(TAG, "init onPageFinished()");
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            Log.e(TAG, "init onPageStarted()");
        }
    };

Also to calculate data I'm using:

mWebView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                super.onProgressChanged(view, newProgress);
                long currentBytes = TrafficStats.getUidRxBytes(Process.myUid());
                long totalBytes = currentBytes - previousBytes;
                Log.e(TAG, "Current Bytes ==>   " + totalBytes
                        + "   New Progress ==>   " + newProgress);
            }
        });

Following are th Logs:

05-06 13:11:11.621: E/TAG(16381): init onPageStarted()
05-06 13:11:11.621: E/TAG(16381): Current Bytes ==>   0   New Progress ==>   10
05-06 13:11:12.422: E/TAG(16381): Current Bytes ==>   2736   New Progress ==>   11
05-06 13:11:12.712: E/TAG(16381): Current Bytes ==>   5743   New Progress ==>   12
05-06 13:11:13.353: E/TAG(16381): Current Bytes ==>   28084   New Progress ==>   15
05-06 13:11:13.393: E/TAG(16381): Current Bytes ==>   42576   New Progress ==>   17
05-06 13:11:14.674: E/TAG(16381): Current Bytes ==>   414446   New Progress ==>   18
05-06 13:11:15.125: E/TAG(16381): Current Bytes ==>   527120   New Progress ==>   19
05-06 13:11:15.125: E/TAG(16381): Current Bytes ==>   629186   New Progress ==>   22
05-06 13:11:15.125: E/TAG(16381): Current Bytes ==>   629186   New Progress ==>   24
05-06 13:11:15.145: E/TAG(16381): Current Bytes ==>   629186   New Progress ==>   26
05-06 13:11:15.155: E/TAG(16381): Current Bytes ==>   629186   New Progress ==>   29
05-06 13:11:15.155: E/TAG(16381): Current Bytes ==>   629186   New Progress ==>   31
05-06 13:11:15.175: E/TAG(16381): Current Bytes ==>   629186   New Progress ==>   34
05-06 13:11:16.576: E/TAG(16381): Current Bytes ==>   629186   New Progress ==>   46
05-06 13:11:17.107: E/TAG(16381): Current Bytes ==>   629186   New Progress ==>   51
05-06 13:11:17.127: E/TAG(16381): Current Bytes ==>   629186   New Progress ==>   55
05-06 13:11:17.157: E/TAG(16381): Current Bytes ==>   629186   New Progress ==>   57
05-06 13:11:17.167: E/TAG(16381): Current Bytes ==>   629186   New Progress ==>   59
05-06 13:11:17.177: E/TAG(16381): Current Bytes ==>   629186   New Progress ==>   72
05-06 13:11:17.187: E/TAG(16381): Current Bytes ==>   629186   New Progress ==>   79
05-06 13:11:17.197: E/TAG(16381): Current Bytes ==>   629186   New Progress ==>   81
05-06 13:11:17.197: E/TAG(16381): Current Bytes ==>   629186   New Progress ==>   84
05-06 13:11:17.217: E/TAG(16381): Current Bytes ==>   629186   New Progress ==>   88
05-06 13:11:17.517: E/TAG(16381): init onPageFinished()
05-06 13:11:17.517: E/TAG(16381): Current Bytes ==>   629186   New Progress ==>   100

As we can see that the data bytes gets constant after a certain period of time,I wanna know that what is happening in that time span?onPageFinished() is called in the end so definitely this time is not used for rendering the data on the WebView. Kindly enlighten me on this. Thanks in advance.


回答1:


Tons of stuff might be happening. The WebView might be getting resources from cache for example, the progress could be reflecting loads of data: URLs, etc..

The onProgressChanged API was only intended to drive a progress bar, so the values you get from it should be treated as a 'best guess'.



来源:https://stackoverflow.com/questions/23490740/calculating-data-downloaded-by-webview-for-a-given-url-by-using-webview-client

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!