网络图片查看
- 客户端发送http请求至服务器,如果请求成功,响应码为200,服务器会通过流向客户端返回请求的数据
- 主线程阻塞,应用会停止刷新界面,停止响应用户任何操作,用户体验非常差
- 耗时操作不要写在主线程
ANR异常
- Application not responding
消息队列
- 只有主线程可以刷新ui(弹吐司框,设置图片信息等),避免线程混乱,线程出现不安全(怪打ui和吃血瓶回血ui,本应该是被怪打后,再吃血瓶加血,先掉后加,线程混乱就会出现先加后掉)
- 主线程创建时,同时也会创建MessageQueue(消息队列)和Looper(消息轮询器)对象
- 如果需要使用消息队列机制,程序员需要自行创建Handler(消息处理器)
- 轮询器不断检测消息队列中是否有消息,如果有,就会把消息取出,交给Handler对象
- Handler对象拿到消息之后,就会在主线程执行handleMessage()
- 也就是说子线程,只要往消息队列中发送消息,主线程立刻执行handleMessage()
请求文本信息
提交数据
get方式提交表单
- 数据拼接在url后面写给服务器
- 表单数据需要经过url编码
post方式提交表单
- 数据通过输出流写给服务器
HttpClient
- apache提供的一个发送Http请求的框架
- 1.创建HttpClient对象: HttpClient client = new DefaultHttpClient();
- 使用异步HttpClient提交表单
- 导入工具类asyncHttpClient
- 不需要自己创建子线程
多线程断点续传下载
多线程:快
- 原理:抢占服务器资源
- 单线程下载:线程从第0个字节开始下,下到最后一个字节,在本地硬盘的临时文件中从第0个字节开始写,写到最后一个字节,下载完成时,临时文件也写完了(开始下载时临时文件的大小就是源文件大小),本地就创建了一个与服务器文件一模一样的文件
- 多线程下载:每条线程下载的开始位置和结束位置都是不一样的,每条线程下载的数据合在一起才是服务器的完整的文件
断点续传:
- 下载从上一次下载结束的位置开始
- 原理:每次下载把下载进度保存至一个文本临时文件中,下一次下载时从文本临时文件获取上一次下载的进度,从这个进度开始继续下载
进度条
- 计算下载百分比进度时要在long类型下计算
使用Xutil工具下载
- github下载源码
- 导入jar包
- 注意,导入第三方jar包到libs下,关联第三方源码时,应新建文件,文件名为jar包名(.jar.properties),里面写明源码路径(如src=F:\\library\\src)