文档章节

WebView视图三:结合Handler边读取网络资源边加载内容

jt1024
 jt1024
发布于 2015/05/02 10:35
字数 549
阅读 17
收藏 0

AndroidManifest.xml文件中加入网络访问的权限设置:

<uses-permission android:name="android.permission.INTERNET" />

activity_main.xml代码

 <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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.jt.http_01.MainActivity" >
    <WebView
        android:id="@+id/webView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" />
</RelativeLayout>

WebViewLoadData2.java代码

/**   
 * 先使用HttpURLConnection进行网络通信,读取网络资源
 * 再使用WebView的loadData(String data, String mimeType, String encoding)方法,加载HTML代码(读取到的网络资源)
 * 最后结合Handler机制更新UI界面
 * @author jiatao   
 * @date 2015-5-1 
 * @version 1.0 
 */
package com.jt.http_01;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.webkit.WebView;
public class WebViewLoadData2 extends Activity {
 
 private WebView webView;
 private Handler handler = new Handler(); 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  initDisplay();//调用初始化界面函数
 }
 
 /**
  * 初始化界面
  */
 public void initDisplay() {
  webView = (WebView) findViewById(R.id.webView1);
  //调用HttpThread(String url,WebView webView,Handler handler)构造方法开启线程
  new HttpThread("http://www.163.com", webView, handler).start();
 }
 
}

HttpThread.java代码

 /**   
 * 先使用HttpURLConnection进行网络通信,读取网络资源
 * 再使用WebView的loadData(String data, String mimeType, String encoding)方法,加载HTML代码(读取到的网络资源)
 * 最后结合Handler机制更新UI界面
 * @author jiatao   
 * @date 2015-5-1 
 * @version 1.0 
 */
package com.jt.http_01;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.os.Handler;
import android.webkit.WebView;
public class HttpThread extends Thread {
 private String url;
 private WebView webView;
 private Handler handler;
 
 public HttpThread(String url,WebView webView,Handler handler){
  this.url = url;
  this.webView = webView;
  this.handler = handler;
 }
 
 @Override
 public void run() {
  // TODO Auto-generated method stub
  super.run();
  try {
   //使用URL类封装HTTP资源的URL地址
   URL httpUrl = new URL(url); 
   try {
    //使用URL的openConnection()方法获取与改URL地址对应的HttpURLConnection对象实例
    HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();
    //设置网络请求的超时时间
    conn.setReadTimeout(5000);
    //设置网络请求方式
    conn.setRequestMethod("GET");
    final StringBuffer sb = new StringBuffer();
    BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String str;
    while((str = reader.readLine())!=null){
     sb.append(str);
    }
    handler.post(new Runnable() {
     
     @Override
     public void run() {
      // TODO Auto-generated method stub
      webView.loadData(sb.toString(), "text/html;charset=gb2312", "utf-8");
     }
    });
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  } catch (MalformedURLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}

© 著作权归作者所有

jt1024
粉丝 1
博文 11
码字总数 7019
作品 0
青岛
私信 提问
VasSonic源码之并行加载

欢迎关注微信公众号: JueCode VasSonic是腾讯开源的一套完整的Hybrid方案,Github地址: VasSonic,官方定义是一套轻量级和高性能的Hybrid框架,专注于提升H5首屏加载速度。今天主要分享下其中...

juexingzhe
2018/05/04
0
0
Android WebView 全面干货指南

前言 总结 Android WebView 常用的相关知识点,令包含以下干货内容分析:Js注入漏洞、WebView 遇到的坑、JsBridge 原理以及框架使用(JsBridge,DSBridge-Android)、缓存机制应用、性能优化、腾...

無名小子的杂货铺
2017/10/30
0
0
UIWebView的使用

一、创建UIWebView [java] view plain copy print ? CGRect bouds = [[UIScreen manScreen]applicationFrame]; UIWebView* webView = [[UIWebView alloc]initWithFrame:bounds]; 二、设置属性......

junwong
2012/03/23
2.4K
0
Android WebView详解(一):相关API介绍

相关API 介绍 下面主要介绍一下下面几个API WebView WebSettings WebViewClient WebChromeClient WebView 基本API // 获取当前页面的URLpublic String getUrl(); // 获取当前页面的原始URL(重...

蔡小鹏
2018/02/06
0
0
Android混合编程:WebView实践

关于作者 郭孝星,程序员,吉他手,主要从事Android平台基础架构方面的工作,欢迎交流技术方面的问题,可以去我的Github提issue或者发邮件至guoxiaoxingse@163.com与我交流。 文章目录 一 基...

郭孝星
2017/10/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql免安装版,服务无法启动没有抱任何错误

1.解压 2.新建my.ini [mysqld]# Remove leading # and set to the amount of RAM for the most important data# cache in MySQL. Start at 70% of total RAM for dedicated server, e......

榴莲黑芝麻糊
20分钟前
0
0
Qt编写安防视频监控系统3-通道交换

一、前言 最开始写通道交换的功能的时候,走了很多弯路,比如最开始用最初级的办法,触发交换的时候,先关闭视频,然后设置新的url重新打开视频,这样处理非常低级而且耗内存还卡还很慢,毕竟...

飞扬青云
20分钟前
0
0
如何远程调试部署在CloudFoundry平台上的nodejs应用

网络上关于如何本地调试nodejs应用的教程已经很多了,工具有Chrome开发者工具,Visual Studio Code,和nodejs周边的一些小工具等等。 在实际情况中,我们可能遇到本地运行良好,但是部署到C...

JerryWang_SAP
42分钟前
5
0
微信扫码访问网站调用默认浏览器打开如何实现?

我们在微信内分享链接或二维码的时候,我们会发现我们的网站是可以在浏览器里正常打开的,但就是不能在微信里打开,提示 “ 已停止访问该网页 ”,无论是聊天框也一样。说是系统检测到您的网...

明尼苏达哈士奇
50分钟前
3
0
一份Java程序员进阶架构师的秘籍,你离架构师还差多远

一、如何定义架构师 Java架构师,首先要是一个Java程序员,熟练使用各种框架,并知道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,怎么解决并...

我最喜欢三大框架
58分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部