Android WebView的加载超时处理

Android WebView的加载超时处理 WebView中支持超时处理,

package com.iaiai.activity; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.graphics.Bitmap; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.Window; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; public class IaiaiActivity extends Activity {    private long timeout = 5000;    private WebView mWebView;    private Handler mHandler = new Handler();    private Timer timer;    @Override    public void onCreate(Bundle icicle) {        super.onCreate(icicle);        requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.main);        mWebView = (WebView) findViewById(R.id.webview);        WebSettings webSettings = mWebView.getSettings();        webSettings.setJavaScriptEnabled(true);        webSettings.setAllowFileAccess(true);        mWebView.setWebViewClient(new WebViewClient() {            /*             * 创建一个WebViewClient,重写onPageStarted和onPageFinished             *             *             * onPageStarted中启动一个计时器,到达设置时间后利用handle发送消息给activity执行超时后的动作.             *             */            @Override            public void onPageStarted(WebView view, String url, Bitmap favicon) {                Log.d("testTimeout", "onPageStarted...........");                // TODO Auto-generated method stub                super.onPageStarted(view, url, favicon);                timer = new Timer();                TimerTask tt = new TimerTask() {                    @Override                    public void run() {                        /*                         * 超时后,首先判断页面加载进度,超时并且进度小于100(大小可以),就执行超时后的动作                         */                        if (TestJsActivity.this.mWebView.getProgress() < 100) {                            Message msg = new Message();                            msg.what = 1;                            mHandler.sendMessage(msg);                            timer.cancel();                            timer.purge();                        }                    }                };                timer.schedule(tt, timeout, 1);            }            /**             * onPageFinished指页面加载完成,完成后取消计时器             */            @Override            public void onPageFinished(WebView view, String url) {                // TODO Auto-generated method stub                super.onPageFinished(view, url);                timer.cancel();                timer.purge();            }        });        mWebView.loadUrl("http://iaiai.iteye.com");    } } 其中要注意的是onPageFinished的两点,第一点,官方是这样解释的: Notify the host application that a page has finished loading. This method is called only for main frame. When onPageFinished() is called, the rendering picture may not be updated yet. To get the notification for the new Picture, use onNewPicture(WebView, Picture). ,程序只认为DOM加载完成就完成了,正在加载的图片不在这个范围之内

转载于:https://my.oschina.net/xiuzhu521/blog/296546

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值