Java 计算网页在webview中完全加载所需的时间
我有一个应用程序,它从文本文件中读取网站,然后计算将网页完全加载到webview所需的时间。我试图通过获取将url加载到webview之前的时间(以毫秒为单位)来计算时间,然后获取网页在webview中完成加载并计算两者之间的差异后的时间,但结果总是为0。你知道为什么吗?加载网页所需的时间应大于0Java 计算网页在webview中完全加载所需的时间,java,android,Java,Android,我有一个应用程序,它从文本文件中读取网站,然后计算将网页完全加载到webview所需的时间。我试图通过获取将url加载到webview之前的时间(以毫秒为单位)来计算时间,然后获取网页在webview中完成加载并计算两者之间的差异后的时间,但结果总是为0。你知道为什么吗?加载网页所需的时间应大于0 public class MainActivity extends Activity { // NUMSITES will be the number of websites containe
public class MainActivity extends Activity {
// NUMSITES will be the number of websites contained in the sites.txt file.
int NUMSITES = 4;
int curSite = 0;
long startTime = 0;
long endTime = 0;
long totTime = 0;
boolean start = true;
Calendar cal = Calendar.getInstance();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
final WebView wb = (WebView) findViewById(R.id.webView1);
final String[] sites = new String[NUMSITES];
getWebsites(sites);
// Listed as optimal settings for HTML5 (may need testing?).
// Ref.
// http://stackoverflow.com/questions/10097233/optimal-webview-settings-for-html5-support
wb.getSettings().setJavaScriptEnabled(true);
WebSettings settings = wb.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);
wb.setFocusable(true);
wb.setFocusableInTouchMode(true);
wb.getSettings().setRenderPriority(RenderPriority.HIGH);
wb.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
wb.getSettings().setDatabaseEnabled(true);
wb.getSettings().setAppCacheEnabled(true);
wb.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
WebViewClient client = new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return true;
}
@Override
public void onLoadResource(WebView view, String url) {
}
@Override
public WebResourceResponse shouldInterceptRequest(WebView view,
String url) {
return null;
}
// On page finished, retrive next website from string array and load
// it.
@Override
public void onPageFinished(WebView view, String url) {
//
endTime = cal.getTimeInMillis();
totTime = endTime - startTime;
Log.d("Time", "Time: " + totTime);
Log.d("Time", "Start Time: " + startTime);
Log.d("Time", "End Time: " + endTime);
if (curSite < NUMSITES) {
startTime = cal.getTimeInMillis();
wb.loadUrl(sites[curSite]);
curSite++;
}
}
};
wb.setWebViewClient(client);
// Initial webpage
wb.loadUrl("https://sites.google.com/site/imagesizetesting/one-1");
}
在计算与初始页面加载的时间差之前,您似乎不会设置startTime。你应该把
startTime = cal.getTimeInMillis();
在
wb.loadUrl("https://sites.google.com/site/imagesizetesting/one-1");
线路。否则,当加载初始页面时,实际上是从endTime减去0。在计算了与初始页面加载的时间差之前,您似乎没有设置startTime。你应该把
startTime = cal.getTimeInMillis();
在
wb.loadUrl("https://sites.google.com/site/imagesizetesting/one-1");
线路。否则,当加载初始页面时,实际上是从endTime中减去0。使用on-ProgressChanged方法可以做到这一点
Calendar cal = Calendar.getInstance();
long startTime = cal.getTimeInMillis();
long endTime = 0;
wv.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
if(progress == 100 )
endTime = cal.getTimeInMillis();
}
});
使用on-ProgressChanged方法可以实现这一点
Calendar cal = Calendar.getInstance();
long startTime = cal.getTimeInMillis();
long endTime = 0;
wv.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
if(progress == 100 )
endTime = cal.getTimeInMillis();
}
});
一种可能的解决方案是onPageStarted、onPageFinished和onProgressChanged的组合 在onPageStarted中启动计时器
在100%的onProgressChanged或onPageFinished中结束计时器,以较晚者为准 一种可能的解决方案是OnPageStart、onPageFinished和onProgressChanged的组合 在onPageStarted中启动计时器
在100%的onProgressChanged或onPageFinished中结束计时器,以较晚者为准 我已经看到了类似问题的解决方案:。希望这有帮助。看起来图片侦听器在API级别12中被无情地删除了。谢谢你!我已经看到了类似问题的解决方案:。希望这有帮助。看起来图片侦听器在API级别12中被无情地删除了。谢谢你!这不会给你正确的时间。因为onPagefinished有时会在页面加载完成之前触发。我在您的评论之后阅读了文档,您是对的。事实上,页面已满负荷,但不能完全呈现。脚本和其他服务可以在事后加载,因此时间并不代表网页已满负荷。相反,它只是告诉你什么时候加载HTML、CSS和资源,这并不能给你正确的时间。因为onPagefinished有时会在页面加载完成之前触发。我在您的评论之后阅读了文档,您是对的。事实上,页面已满负荷,但不能完全呈现。脚本和其他服务可以在事后加载,因此时间并不代表网页已满负荷。相反,它只是说当HTML、CSS和资源加载时。