Можно ли измерить время загрузки всех ресурсов веб-просмотра? Например, для загрузки всего Интернета я использую:
public void onPageStarted(WebView view, String url, Bitmap favicon) {
startingTime = System.currentTimeMillis();
super.onPageStarted(view, url, favicon);
}
public void onPageFinished(WebView view, String url) {
timeElapsed = System.currentTimeMillis() - startingTime;
super.onPageFinished(view, url);
}
но для измерения загрузки CSS, изображений и т. д. я использую
public HashMap<String, Long> resources = new HashMap<String, Long>();
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request){
resources.put(request.getUrl().toString(), System.currentTimeMillis());
WebResourceResponse response = super.shouldInterceptRequest(view, request);
return response;
}
public void onLoadResource(WebView view, String url) {
if(resources.containsKey(url)){
Long timeStartResource = resources.get(url);
Long timeElapseResource = System.currentTimeMillis() - timeStartResource;
}
super.onLoadResource(view, url);
}
Я думал, что метод onLoadResource выполняется при загрузке ресурса, но согласно документации
public void onLoadResource (представление WebView, строковый URL-адрес).
Уведомить хост-приложение о том, что WebView загрузит ресурс, указанный по данному URL-адресу.
А также
public WebResourceResponse shouldInterceptRequest (представление WebView, запрос WebResourceRequest)
Уведомить хост-приложение о запросе ресурса и разрешить приложению вернуть данные. Если возвращаемое значение равно нулю, WebView продолжит загрузку ресурса как обычно. В противном случае будут использоваться ответ и данные о возврате.
Оба они запускаются перед загрузкой ресурса. Есть ли способ измерить это время?