开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第9天,点击查看活动详情
一.配置项目
1.新建一个项目MyNetwork
2.在xml文件夹里新建一个xml文件
并且在里面写上如下的代码,用于配置一下网络安全标签这样的一个属性:
在清单文件里还需要配置一些内容:
首先在application里还是配置一下网络安全设置:
然后如果想要进行网络连接,我们需要打开权限:
以上基本的配置就已经配置好啦!
二.页面的绘制以及内部函数的设置
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<Button
android:layout_width="match_parent"
android:onClick="getHtml"
android:text="获取html"
android:layout_height="wrap_content">
</Button>
</LinearLayout>
运行一下可以看到初步的页面就是这样:
写一个函数,用于返回html的字符串函数:
String getHtml(String path){
//定义url
InputStream in = new
BufferedInputStream(conn.getInputStream());
//读取输入流中的数据
int len = 0;
byte[] buffer = new byte[1024];
String tmp = "";
while ((len=in.read(buffer))!=-1){
String s = new String(buffer,0,len);
tmp = tmp +s; }
return tmp;
} catch (Exception e) {
e.printStackTrace();
//出现异常就返回一个空的字符串
return "";
}
运行测试一下,这样就代表可以正常访问到一个网页了:
我们运行一下测试,发现会报错:
大体意思就是哪一个线程创建它就由哪个线程来操作它,其他线程不可以操作。
Hander原理图:
其实hander就相当于是一个中继器,如果有新的消息,消息监听就会检测到消息队列中的内容,此时hander就会调用handmessage函数,函数内部就是我们想要实现的逻辑内容,我们本程序的目的就是要更新ui。
那什么时候可以用到hander呢? 如果主线程和子线程之间不能进行通信,传递消息时,我们可以利用这个hander中继器来处理。
开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第9天,点击查看活动详情