Android Webview在加载另一个Web之前完成加载

时间:2012-10-15 04:24:30

标签: android webview android-webview

我目前正在开发一个测试应用程序,用于测试网站列表的速度。该应用程序应该逐个自动访问所有这些网站,我使用的方法为:

    mainWebview.setWebViewClient(new WebViewClient(){                   
        public void onPageFinished(WebView view, String url){
            super.onPageFinished(view, url);

            endtime = Calendar.getInstance().getTimeInMillis();
            Toast.makeText(ctx, "The Time:" + ((endtime - starttime)/1000) +"."+ (((endtime - starttime)/100)%10), Toast.LENGTH_SHORT).show();
            resultList.add(url + " : "+ ((endtime - starttime)/1000) +"."+ (((endtime - starttime)/100)%10));
            timer.cancel();

            if (index < testWebsiteList.length - 1){
                Log.i("TEST" , "//INDEX: " + index);
                index ++;
                mainWebview.loadUrl(testWebsiteList[index]);
            }

            mainWebview.clearCache(true);
        }

然而,问题是,一旦webview开始加载第一个web,它将给出这样的logcat输出:

//INDEX: 0
//INDEX: 1
//INDEX: 2
//INDEX: 3
//INDEX: 4
//INDEX: 5
//INDEX: 6
//INDEX: 7 ...

只有最后一个网页被正确加载,0-last中的所有网页都没有显示,但onPageFinsihed方法被触发。

如何才能解决问题,让我可以在最后一个网站完成之前逐一访问网站。

1 个答案:

答案 0 :(得分:-1)

页面已在onPageFinished中加载完成。但它不能立即呈现。所以你无法抓住完成加载。您可以将picturelistener监听器应用于您的webview。这可以在完成时捕获webview渲染。应用此代码:

webview.setPictureListener(new PictureListener() {

                public void onNewPicture(WebView view, Picture picture) {
                    if (picture != null) {
                                                //Your progress in here
                                            }
                                    }

}