等到浏览器加载页面,清除缓存

时间:2012-03-07 16:49:42

标签: android

我正在尝试编写一个Android应用来测试手机的性能和电池续航时间。我正在尝试执行以下操作:

//start timing
//open browser to web page (using intent)
//wait for browser to finish loading page
//stop timing
//calculate total time, write to file
//clear browser cache
//repeat until battery dies

我的问题是,如何判断页面何时加载?我已经看过一些关于javascript的提及,但我还没有看到一个很好的例子来理解我如何将它集成到我的应用程序中(或者即使这是我想要完成的最好的想法)。

我的第二个问题是,如何清除浏览器的缓存?防止浏览器从缓存加载也是一种可能的解决方案。

2 个答案:

答案 0 :(得分:1)

我有一个进度视图,直到页面加载为止。这是通过以下方式实现的:

final WebView webView = (WebView) getActivity().findViewById(R.id.webview);
    webView.getSettings().setJavaScriptEnabled(true);

    webView.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, int progress)
        {
            //are we done yet?
            if(progress == 100) {               
                try
                {
                    View progress_bar =(View) getActivity().findViewById(R.id.progress_bar);
                    //hide the progress view if we are done
                    if(progress_bar != null)
                        progress_bar.setVisibility(View.GONE);
                }
                catch(Exception e) {}
            }
        }
    });        

编辑:我没有对此进行过测试,但您是否尝试过以下操作来禁用缓存:

webView.getSettings().setAppCacheEnabled(false);

答案 1 :(得分:0)

  

如何判断页面何时加载?

欢迎您手动注意这一点。

如果您认为自动执行此过程,那是不可能的,因为浏览器不是您的应用。

  

如何清除浏览器的缓存?

欢迎您在浏览器中手动清除它(如果浏览器有选项),或者通过“设置”应用程序的“应用程序”部分清除它。

如果您认为自动执行此过程,那是不可能的,因为浏览器不是您的应用。

  

防止浏览器从缓存加载也是一种可能的解决方案。

欢迎您在您正在测试的任何浏览器中手动配置它,假设有问题的浏览器有一个配置选项。

如果您认为自动执行此过程,那是不可能的,因为浏览器不是您的应用。

现在,可以想象某些浏览器恰好提供API以允许您自动完成上述所有操作。来自开源项目的股票浏览器应用程序没有,我不知道任何这样做(并且如果有人会害怕)。

您也可以在自己的应用中使用WebView小部件,在这种情况下,您可以自动化所有这些内容,因为那是您的应用。