Android网络-网络开源库
一. android-async-http源码地址:Android-async-http
与volley一样是异步网络库,但volley是封装的httpUrlConnection,它是封装的httpClient,而android平台不推荐用HttpClient了,所以这个库已经不适合android平台了。
二. Volley源码地址:Volley
volley是一个简单的异步http库,仅此而已。缺点是不支持同步,这点会限制开发模式。自带缓存,支持自定义请求。不适合大文件上传和下载。 Volley在Android 2.3及以上版本,使用的是HttpURLConnection,而在Android 2.2及以下版本,使用的是HttpClient。 Volley自己的定位是轻量级网络交互,适合大量的,小数据传输。 不过再怎么封装Volley在功能拓展性上始终无法与OkHttp相比。Volley停止了更新,而OkHttp得到了官方的认可,并在不断优化。
三. OKHttp源码地址:OKHttp
okhttp是高性能的http库,支持同步、异步,而且实现了spdy、http2、websocket ...
Android网络-网络状态处理
一. 前言1. NetworkInfo的过时Android 编译sdk版本为29时,NetworkInfo 过时了。
我们以前都是通过NetworkInfo的isConnected来判断网络是否连接,NetworkInfo的getType来判断网络连接类型。
2. NetworkCapabilities的使用我们将使用NetworkCapabilities来代替NetworkInfo判断网络是否连接,以及网络的连接类型。
3. 记住在清单文件中添加网络状态查询权限123456789101112131415161718192021222324<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="swu.xl.networkstate"> <!--查看网络状态权限--> <us ...
Android网络-解析JSON数据
一. 什么是 JSON 数据类型1. 在 JSON 中,值必须是以下数据类型之一
字符串
数字
对象(JSON对象)
数组
布尔
null
2. 在 JSON 中,值不可以是以下数据类型之一
函数
日期
undefined
3. JSON 的具体数据类型① JSON字符串:JSON 中的字符串必须用双引号包围。
1{ "name":"John" }
② JSON数字:JSON 中的数字必须是整数或浮点数。
1{ "age":30 }
③ JSON对象:对象一定使用 { } 包着的。
123{ "employee":{ "name":"Bill Gates", "age":62, "city":"Seattle" }}
④ JSON数组:数组一定使用 [ ] 包着的。
123{ "emplo ...
Android网络-DOM方式解析Xml数据
一. 前言1. DOM解析DOM 解析是把文件一次性加载到内存里,生成一个树状结构,在内存中对树状节点进行修改或添加节点。所以,这种方法的缺点是消耗的内存太大。
2. 常用的方法123456789101112131415DocumentBuilder抽象类/** * Parse the content of the given <code>InputStream</code> as an XML * document and return a new DOM {@link Document} object. * An <code>IllegalArgumentException</code> is thrown if the * <code>InputStream</code> is null. * * @param is InputStream containing the content to be parsed. * @return <code>Document</cod ...
Android网络-PULL方式解析Xml数据
一. 前言1. 了解 XmlResourceParser1XmlResourceParser extends XmlPullParser
在Android中一般使用 XmlResourceParser,解析的Xml文件需要放在 Res文件夹下面的 xml文件夹 中。
2. 常用的方法1234567/** * Returns the type of the current event (START_TAG, END_TAG, TEXT, etc.) * * @see #next() * @see #nextToken() */int getEventType() throws XmlPullParserException;
123456789101112131415161718192021222324252627282930313233343536/** * This array can be used to convert the event type integer constants * such as START_TAG or TEXT to * to a string. F ...
Android网络-SAX方式解析Xml数据
一. 前言123456789101112131415161718//创建SAXParser工厂SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();//通过SAXParser工厂创建SAXParserSAXParser saxParser = saxParserFactory.newSAXParser();//通过SAXParser获取XMLReaderXMLReader xmlReader = saxParser.getXMLReader();//实例化自己继承于DefaultHandler的SAXParseHandler,并将其设置为XMLReader的ContentHandlerSAXParseHandler saxParseHandler = new SAXParseHandler();xmlReader.setContentHandler(saxParseHandler);//获取xml数据流,并将其转化为InputSourceInputStream is = getResources().ope ...
Android网络-Xml数据解析
一. 解析Xml数据的三种方式
SAX
PULL
DOM
二. SAX方式Android网络-SAX方式解析Xml数据
三. PULL方式Android网络-PULL方式解析Xml数据
四. DOM方式Android网络-DOM方式解析Xml数据
五. 三种方式的区别1. SAX解析基于事件方式解析,每产生一个数据就得到该事件,但是事件是由上到下,不能回退。速度快,效率高,不能回退
2. PULL解析类似于SAX解析,是基于事件的,语法方便理解。
3. DOM 解析把文件一次性加载到内存里,生成一个树状结构,在内存中对树状节点进行修改或添加节点。但是消耗的内存太大。
参考文章xml文件解析方式详解、 pull方式解析xml文件实现代码
Android网络-请求数据
一. 前言关于网络编程更加详细的内容可以参考:Java 网络
二. AsyncTask1. AsyncTask是什么?AsyncTask是Android封装的一个轻量级的异步类,可以在线程池中执行异步任务,并可以将执行进度和结果传递给UI线程。 AsyncTask的内部封装了两个线程池(SerialExecutor、THREAD_POOL_EXECUTOR)和一个Handler。 其中SerialExecutor线程池用于任务的排队,让需要执行的多个耗时任务,按顺序排列,THREAD_POOL_EXECUTOR线程池才真正地执行任务,Handler用于从工作线程切换到主线程。
作用:
实现多线程:在工作线程中执行任务,如 耗时任务。
异步通信、消息传递:实现工作线程 & 主线程(UI线程)之间的通信,即:将工作线程的执行结果传递给主线程,从而在主线程中执行相关的UI操作
2. AsyncTask的泛型参数12345public abstract class AsyncTask<Params, Progress, Result>{}#Param ...