我怎样才能知道我的WebView加载100%? [英] How can I know that my WebView is loaded 100%?

查看:130
本文介绍了我怎样才能知道我的WebView加载100%?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的WebView加载一些HTML code包含的JavaScript。

现在,我要测试是否我的WebView是前5 secondes加载。我试过的方法 getProgress(),但有时我得到的进展是100,但是我的web视图没有加载。
有另一种方式,以确保我的web视图加载100%?

这是我的code部分:

  sdk.getWebView()loadDataWithBaseURL(notreal /,data_html,MIME_TYPE,ENCODING_UTF_8,空)。

定时器定时=新的Timer();
TimerTask的任务=新的TimerTask(){

    @覆盖
    公共无效的run(){
    Log.i(TAG,进步鳍=+ sdk.getWebView()getProgress());

    如果(sdk.getWebView()getProgress()< 100){
        //取消web视图
        sdk.getContext()。runOnUiThread(新的Runnable(){
             @覆盖
             公共无效的run(){
            。sdk.getImgView()setVisibility(View.VISIBLE);
            。sdk.getWebView()setVisibility(View.GONE);
             }
        });
    }

    //否则,web视图被加载
    其他{
        // prepare的WebView
        sdk.getContext()。runOnUiThread(新的Runnable(){
            @覆盖
            公共无效的run(){
                     //隐藏的ImageView
                     。sdk.getImgView()setVisibility(View.GONE);
                     。sdk.getWebView()setVisibility(View.VISIBLE);
            }
        });
    }

 }
 };
 timer.schedule(任务,5000);
 

解决方案

由于在此间表示:<一href="http://stackoverflow.com/questions/3149216/how-to-listen-for-a-webview-finishing-loading-a-url-in-android/5172952#5172952~">How听一个web视图加载完成在Android中的URL?

 布尔loadingFinished = TRUE;
布尔重定向= FALSE;

mWebView.setWebViewClient(新WebViewClient(){

   @覆盖
   公共布尔shouldOverrideUrlLoading(web视图查看,串urlNewString){
       如果(!loadingFinished){
          重定向= TRUE;
       }

   loadingFinished = FALSE;
   view.loadUrl(urlNewString);
   返回true;
   }

   @覆盖
   公共无效onPageStarted(web视图查看,字符串URL,位图facIcon){
        loadingFinished = FALSE;
        // SHOW装载如果它不是已经初见端倪
    }

   @覆盖
   公共无效onPageFinished(web视图查看,字符串URL){
       如果(!重定向){
          loadingFinished = TRUE;
       }

       如果(loadingFinished&安培;&安培;!重定向){
         //隐藏加载完毕
       } 其他{
          重定向= FALSE;
       }

    }
});
 

I'm trying to load in my WebView some HTML code that contains JavaScript.

Now , I want to test if my WebView is loaded before 5 secondes. I've tried the method getProgress(), but sometimes I get that the progress is 100, but my Webview is not loaded.
Is there another way to be sure that my Webview is loaded 100%?

This is a part of my code :

sdk.getWebView().loadDataWithBaseURL("notreal/", data_html,MIME_TYPE,ENCODING_UTF_8,null);

Timer timer = new Timer();
TimerTask task = new TimerTask() {

    @Override
    public void run(){                      
    Log.i("TAG", "progress fin = "+sdk.getWebView().getProgress());

    if(sdk.getWebView().getProgress() <100){
        //cancel the webView
        sdk.getContext().runOnUiThread(new Runnable() {
             @Override
             public void run() {
            sdk.getImgView().setVisibility(View.VISIBLE);
            sdk.getWebView().setVisibility(View.GONE);
             }
        });
    }

    // else ,the Webview is loaded
    else{
        //prepare webview 
        sdk.getContext().runOnUiThread(new Runnable() {
            @Override
            public void run(){
                     // hide imageView
                     sdk.getImgView().setVisibility(View.GONE);
                     sdk.getWebView().setVisibility(View.VISIBLE);
            }
        });
    }

 }
 };
 timer.schedule(task, 5000);

解决方案

As said here: How to listen for a Webview finishing loading a URL in Android?

boolean loadingFinished = true;
boolean redirect = false;

mWebView.setWebViewClient(new WebViewClient() {

   @Override
   public boolean shouldOverrideUrlLoading(WebView view, String urlNewString) {
       if (!loadingFinished) {
          redirect = true;
       }

   loadingFinished = false;
   view.loadUrl(urlNewString);
   return true;
   }

   @Override
   public void onPageStarted(WebView view, String url, Bitmap facIcon) {
        loadingFinished = false;
        //SHOW LOADING IF IT ISNT ALREADY VISIBLE  
    }

   @Override
   public void onPageFinished(WebView view, String url) {
       if(!redirect){
          loadingFinished = true;
       }

       if(loadingFinished && !redirect){
         //HIDE LOADING IT HAS FINISHED
       } else{
          redirect = false; 
       }

    }
});

这篇关于我怎样才能知道我的WebView加载100%?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆