1

私は現在、ウェブサイトのリストの速度をテストするために使用されるテストアプリに取り組んでいます. アプリは、これらすべての Web サイトを 1 つずつ自動的にアクセスすることになっています。私は次のようにアプローチを使用します。

    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 ...

最後の Web のみが正しくロードされ、0-last 内のすべての Web は表示されませんが、onPageFinsihed メソッドが起動されます。

最後のウェブサイトが終了する前に、ウェブサイトを 1 つずつアクセスできるようにするには、どうすれば問題を解決できますか。

4

1 に答える 1

-1

ページは onPageFinished で読み込まれます。しかし、それをすぐにレンダリングすることはできません。そのため、読み込みを完了するためにキャッチできませんでした。piclistener リスナーを webview に適用できます。これにより、終了時に webview のレンダリングをキャッチできます。このコードを適用します:

webview.setPictureListener(new PictureListener() {

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

}

于 2012-10-17T13:15:09.137 に答える