WebView的超时处理
来源:互联网 发布:sql注入攻击 epub 编辑:程序博客网 时间:2024/04/30 14:53
main.xml如下:
html代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <WebView android:id="@+id/webView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_centerInParent="true" /></RelativeLayout>
MainActivity如下:
java代码
html代码
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <WebView
- android:id="@+id/webView"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_centerInParent="true"
- />
- </RelativeLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <WebView android:id="@+id/webView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_centerInParent="true" /></RelativeLayout>
MainActivity如下:
java代码
- packagec.c;
- importjava.util.Timer;
- importjava.util.TimerTask;
- importandroid.app.Activity;
- importandroid.graphics.Bitmap;
- importandroid.os.Bundle;
- importandroid.os.Handler;
- importandroid.os.Message;
- importandroid.view.KeyEvent;
- importandroid.webkit.WebView;
- importandroid.webkit.WebViewClient;
- /**
- * Demo描述: WebView超时的处理
- */
- publicclassMainActivity extendsActivity {
- privateTimer mTimer;
- privateWebView mWebView;
- privateTimerTask mTimerTask;
- privatefinalintTIMEOUT = 10000;
- privatefinalintTIMEOUT_ERROR = 9527;
- @Override
- publicvoidonCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- init();
- }
- privateHandler mHandler = newHandler() {
- publicvoidhandleMessage(Message msg) {
- if(msg.what == TIMEOUT_ERROR) {
- System.out.println("===》 收到消息: webView超时");
- }
- };
- };
- privatevoidinit() {
- mWebView = (WebView) findViewById(R.id.webView);
- mWebView.getSettings().setJavaScriptEnabled(true);
- mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
- mWebView.getSettings().setSupportZoom(true);
- mWebView.getSettings().setDomStorageEnabled(true);
- mWebView.getSettings().setAllowFileAccess(true);
- mWebView.getSettings().setPluginsEnabled(true);
- mWebView.getSettings().setUseWideViewPort(true);
- mWebView.getSettings().setBuiltInZoomControls(true);
- mWebView.getSettings().setLoadWithOverviewMode(true);
- mWebView.requestFocus();
- mWebView.loadUrl("your url");
- mWebView.setWebViewClient(newWebViewClient() {
- @Override
- publicbooleanshouldOverrideUrlLoading(WebView view, String url) {
- returnsuper.shouldOverrideUrlLoading(view, url);
- }
- @Override
- publicvoidonLoadResource(WebView view, String url) {
- super.onLoadResource(view, url);
- }
- @Override
- publicvoidonPageStarted(WebView view, String url, Bitmap favicon) {
- super.onPageStarted(view, url, favicon);
- System.out.println("======> onPageStarted 开始加载");
- mTimer = newTimer();
- mTimerTask = newTimerTask() {
- @Override
- publicvoidrun() {
- // 在TIMEOUT时间后,则很可能超时.
- // 此时若webView进度小于100,则判断其超时
- // 随后利用Handle发送超时的消息
- System.out.println("======> mWebView.getProgress()="+ mWebView.getProgress());
- if(mWebView.getProgress() < 100) {
- Message msg = newMessage();
- msg.what = TIMEOUT_ERROR;
- mHandler.sendMessage(msg);
- if(mTimer != null) {
- mTimer.cancel();
- mTimer.purge();
- }
- }
- if(mWebView.getProgress() == 100) {
- System.out.println("======> 未超时");
- if(mTimer != null) {
- mTimer.cancel();
- mTimer.purge();
- }
- }
- }
- };
- mTimer.schedule(mTimerTask, TIMEOUT, 1);
- }
- @Override
- publicvoidonPageFinished(WebView view, String url) {
- super.onPageFinished(view, url);
- System.out.println("======> onPageFinished 加载完成");
- if(mTimer != null) {
- mTimer.cancel();
- mTimer.purge();
- }
- }
- });
- }
- // 处理Back键
- @Override
- publicbooleanonKeyDown(intkeyCode, KeyEvent event) {
- if(keyCode == event.KEYCODE_BACK && mWebView.canGoBack()) {
- mWebView.goBack();
- returntrue;
- }
- returnsuper.onKeyDown(keyCode, event);
- }
- }
- WebView的超时处理
- WebView的超时处理
- Android WebView的加载超时处理
- Android WebView的加载超时处理
- Android WebView的加载超时处理
- android webview处理加载超时
- NIO的超时处理
- nginx的超时处理
- Nginx的超时处理
- nginx的超时处理
- Nginx的超时处理
- 超时的处理
- IRP的超时处理
- webview的404处理
- JAVA线程的超时处理
- nginx超时事件的处理
- 数据库连接池的超时处理
- python爬虫超时的处理
- ABAP程序复制到剪贴板的代码
- 判断设备及iOS版本的宏
- Unity实例化Prefab in C#
- 当IDENTITY_INSERT 设置为 OFF 时,不能为表 'JobSeekerBaseInfoExtension' 中的标识列插入显式值
- Calgary Collegiate Programming Contest 2008 / UVa 11549 Calculator Conundrum (Floyd判圈算法&更快的优化)
- WebView的超时处理
- 作业 E2
- Node.js中exports与module.exports的区别
- SQLYog不能建外键
- springMVC+mybatis配置详解
- windows消息和消息队列
- Java中HashMap遍历的两种方式
- 测试kestrel的队列(一)
- jQuery.jcrop 基本参数