因为我负责安卓客户端开发,众所周知,客户端对于用户体验的要求是非常高的。如果有卡顿则会非常影响用户的体验,而且几次卡顿就可能会导致用户卸载APP,所以说安卓中有一个名词叫做ANR(Application not response),即程序不响应。具体情况有三种:
1:KeyDispatchTimeout(5 seconds) –主要类型
按键或触摸事件在特定时间内无响应
2:BroadcastTimeout(10 seconds)
BroadcastReceiver 在特定时间内无法处理完成
3:ServiceTimeout(20 seconds)
Service 在特定的时间内无法处理完成
而我们的项目又要从服务器频繁获取图片和数据,所以势必会造成很多的网络请求操作,所以我们需要考虑网络请求框架和图片加载框架,使用哪种框架才会更加符合APP的需求,使得APP更加流畅。
一.考虑到逛周的网络数据的传输是轻量级的小数据,所以我们采取适合传输小数据的Volley框架。首先来看一下Volley优点:
- 可以取消请求
- 容易扩展,面向接口编程
- 网络请求线程NetworkDispatcher默认开启了4个,可以优化,通过手机CPU数量
可以发现Volley封装了线程,实现了多线程开发并且不会无止尽的开线程而造成资源的浪费。
而且Volley另一大优点是使用起来非常简单,下面我将使用Volley的过程简单描述一下:
1.声明一个Volley的请求队列:
2.生成一个JsonRequest对象,并且使用Callback回调方式得到返回的数据
3.将这个JsonRequest对象加入到请求队列中
至此一次网络请求就结束了,是不是很简单。没错优秀的性能+简单的使用,使得Volley框架备受开发者们的喜爱。
哦对啦,别忘记在build.gradle中添加Volley的引用
二.使用Fresco框架加载图片
考虑在项目中使用Fresco图片加载框架,首先说一下Fresco的优点,先看一张官方图:
没错,使用了Fresco框架加载图片,不需要再去关心图片加载和显示的繁琐的问题!
简单介绍一下几个优点:
1,使用简便,学习成本低
2,十分强大,使用起来非常流畅,内存管理不用愁,不用担心OOM。
3,自带加载时淡入效果,开发起来不费劲.
4,图片加载时可在布局中直接设置加载动画等等,代码量大大减少
我认为第二条优点是最重要的,因为Fresco独特的内存管理,使得OOM不用成为开发的问题。下面来介绍一下如何使用Fresco:
1.在xml文件中使用Fresco库中的SimpleDraweeView,可以发现里面有很多属性,比如默认的图片,加载失败的图片,重试的图片等等,这些可以直接在属性中设置,比较方便。
2.举例说明,如何加载图片
Uri就是我们要请求的图片的Uri,可以发现Fresco的使用非常简洁和流畅,优美的链式调用使得语句非常清晰。
3.别忘了引入引用
可以发现Fresco支持多种图片格式,甚至连GIF图都支持,所以也非常方便开发者们加载多种多样的图片。
本次学习报告,主要简单学习了两种框架:Volley和Fresco,具体实战还要在项目开发中使用和练习。