当前位置: 首页 > 知识库问答 >
问题:

Android webview测量所有资源的时间

麻宜春
2023-03-14

可以测量html" target="_blank">webview中所有资源的加载时间吗?例如,为了加载完整的web,我使用:

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);
}

我以为onLoadResources方法是在资源加载时执行的,但是根据留档

public void onLoadResource(WebView视图,字符串url)
通知主机应用程序WebView将加载给定url指定的资源。

public WebResourceResponse应该InterceptRequest(WebView视图、WebResourceRequest请求)
通知主机应用程序资源请求,并允许应用程序返回数据。如果返回值为null,WebView将一如既往地继续加载资源。否则,将使用返回响应和数据。

它们都在加载资源之前运行。有没有办法测量这些时间?

共有2个答案

濮君植
2023-03-14

你可以使用onPageFinish()完成,这个问题的答案已经在这里给出了描述。

杭昊空
2023-03-14

有一个伟大的HTML5 API可以访问您的页面。看http://www.sitepoint.com/introduction-resource-timing-api/

从KitKat开始,WebView基于支持此API的Chromium。要检查这一点,请打开应用程序的远程web调试(假设已为WebView启用JavaScript),然后尝试在控制台中进行评估:

window.performance.getEntriesByType('resource')

您将为页面加载的每个资源获得一个PeraticeResourceTiming对象数组。

为了将信息传输到Java端,可以使用注入的Java对象。

 类似资料:
  • 我们有大量Azure订阅,目前已达到数百个。 我希望生成一个报告(理想情况下使用Azure Powershell或Azure CLI),以递归方式提取分配给每个资源组中每个资源的所有标记的列表,用于40-50个订阅。 目前,我可以列出在资源组级别分配的所有标记,但我无法找到一种方法来列出分配给每个资源组中的各个资源的标记。我要提取此报告的订阅和资源组列表保存在CSV文件中,该文件包括两列,分别显示

  • 有没有办法在AWS帐户中列出所有可计费资源(基本上是EC2、EBS、RDS)。是否有任何aws cli命令或脚本可用于执行此操作。 我有aws帐户root访问权限。

  • 有没有办法列出AWS中的所有资源?对于所有区域,所有资源...例如列出所有EC2实例、所有VPC、API Gateway中的所有API等...我想列出我帐户的所有资源,因为我很难找到我现在可以放弃的资源。

  • 以下资源包含有关Perl的其他信息。 请使用它们来获得更深入的知识。 Perl上的有用链接 维基百科上的Perl - 它是维基百科上的Perl编程语言。 Perl博客 - 它包含有关Perl编程语言的新闻和观点。 Perl官方网站 - 这是Perl的官方网站。 Perl文档 - 它是Perl编程语言的官方文档。 Perl上的有用书籍

  • 以下资源包含有关Joomla的其他信息。 请使用它们来获得更深入的知识。 关于Joomla的有用链接 Joomla Wiki - Joomla的维基百科参考。 关于Joomla的有用书籍

  • 以下资源包含有关jQuery的其他信息。 请使用它们来获得有关此主题的更多深入知识。 关于jQuery的有用链接 jQuery官方网站 - jQuery最新版本,插件,教程,新闻和博客等的主要资源。 jQuery文档 - 这个链接可以让您了解主要的jQuery文档页面,其中包含jQuery的完整参考。 jQuery用户界面 - 使用jQuery UI为您的Web应用程序创建最先进的图形用户界面。