这里写自定义目录在此先讲解下线程的知识:(From:安安本安)
1,线程(Thread)
是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
2,多线程(MultiThreading)
是指从软件或者硬件上实现多个线程并发执行的技术。
当一个应用第一次启动时,Android会同时启动一个对应的主线程(MainThread),主线程主要负责处理与UI相关的事件(用户的按钮点击事件,用户手势事件以及屏幕绘图事件等),并把相关的事件分发到对应的组件进行处理,所以主线程通常又被叫做UI线程,
3,在开发Android 应用时必须遵守单线程模型的原则:
不要阻塞UI线程
确保只在UI线程中访问Android Ul工具包如果在非UI线程中直接操作UI控件,会抛出android.view.ViewRoot$CalledFromWrongThreadException的异常,这与普通的java程序不同。
Message:消息,理解为线程间交流的信息,包含消息ID、消息处理对象和处理的数据等,统一放到Message Queue,最终由Handler处理。
Handler:非UI线程与UI线程通信的接口,消息处理者,专门负责Message的发送和处理:
1) WebView
布局中写:
MainActivity里:
PS:运行前保持联网
2)使用HTTP协议访问网络:
原理:
客户端向服务器发出请求,服务器接收请求后返回数据给客户端,客户端再对数据进行解析处理。
WebView在后台已处理了发送HTTP请求,接收服务响应,解析返回数据,展示
1))手动发送HTTP请求(HttpURLConnection):
MainActivity中:
Activity中:
点击后:
若向服务器提交数据:
将请求方法改成POST,并在获取输入流之前把要提交的数据写出(每条消息以键值对形式存在,数据和字符间用‘&’隔开)
eg(传输用户名和密码):
connection.setRequestMethod("POST");
DataOutputStream out = new DataOutputStream(connection.getOutputStream());
out.writeBytes("username = admin & password = 123456");
3)OKHTTP
1))添加依赖
在AndroidStudio中使用不需要下载jar包,直接添加依赖即可:
implementation 'com.squareup.okhttp3:okhttp:4.9.0' //Android 4.1的依赖
2))添加网络权限(在AndroidManifest里)
在MainActivity中:
在布局中:
PS:ScrollView:视图的滚动过程