2012-03-07 62 views
0

我正在尝试编写一个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的提及,但我还没有看到一个很好的例子来理解我可以如何将它集成到我的应用程序中(或者即使这是我想完成的最佳想法)。

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

回答

0

如何判断页面何时加载?

欢迎您手动注意此事。

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

如何清除浏览器的缓存?

欢迎您在浏览器本身(如果浏览器有选项)或手动设置应用程序的应用程序部分手动清除它。

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

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

欢迎您在任何浏览器中手动配置它,而这正是您正在测试的,假设相关浏览器具有配置选项。

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

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

也欢迎您在自己的应用程序中使用WebView小部件,在这种情况下,您可以将所有这些东西自动化,因为这是您的应用程序。

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); 
+0

我认为* *这是为网页视图,后阅读本@CommonsWare可能并非如此。如果您决定使用WebView,请使用我的答案。 – 2012-03-07 19:14:53

+0

我希望能使用浏览器,但看起来这可能是不可能的,所以我会考虑使用WebView。 – user1255170 2012-03-07 19:27:48

+0

好吧,如果@CommonsWare或我自己的答案是有用的,请勾选它们对他人有用/ upvote以便将来使用。 – 2012-03-07 19:29:41