目前我正在开发一款应用程序来测量网页加载时间,包含的资源数量(和大小)等。
我仍然缺少的一件事是"设置时间",这是点击"开始测量"按钮,到加载页面的第一个字节的时间。
到目前为止,我已经通过在点击按钮后注意系统的毫秒时间来测量这个时间,然后注意onPageStarted事件的时间来获得这个设置时间。
我觉得我很好,但最近我发现,如果我想测量这样的几个网页(我总是通过调用stopLoading并加载about:blank来清除webview),我看到这个设置时间非常明显低于加载第一页的时间。
示例值:
Setup Time (www.google.com): 0.156s
Setup Time (www.manwe.cz): 0.05s
Setup Time (www.anothersite.com): 0.007s
Setup Time (www.reddit.com): 0.025s
等
首先 - 为什么时间如此不同, 第二 - 任何想法如何正确测量这个设置时间? (因为这显然不正确)。
只是一个注意事项:我加载第一个/第二个等的网站并不重要......(这意味着如果我首先加载google.com,然后reddit.com第二个,反之亦然,这个想法是第一个加载的页面具有明显更高的“#34;设置时间")
编辑:代码片段
自定义webViewClient
private WebViewClient myWebViewClient = new WebViewClient() {
public void onPageStarted(WebView view, String url, Bitmap favicon) {
setupTime = (System.currentTimeMillis()-startTime)/1000.0;
startTime = System.currentTimeMillis();
}
public void onPageFinished(WebView view, String url){
pageLoaded();
endTime = System.currentTimeMillis();
}
}
使用myWebView客户端
public void StartURL(){
setupTime = 0.0;
endTime = (long) 0;
startTime = (long) 0;
startTime = System.currentTimeMillis();
activity.wv.setWebViewClient(myWebViewClient);
currentURL = URLList.remove(0);
activity.wv.loadUrl( currentURL );
}
一切都完成后我用
activity.wv.stopLoading();
activity.wv.setWebViewClient(clearWebClient);
activity.wv.loadUrl("about:blank");
和clearWebClient是
private WebViewClient clearWebClient = new WebViewClient() {
public void onPageFinished(WebView view, String url){
StartURL();
}
};
基本上只是重新启动StartURL处理另一个网站的过程