系统分析技术学习报告(一)

因为我负责安卓客户端开发,众所周知,客户端对于用户体验的要求是非常高的。如果有卡顿则会非常影响用户的体验,而且几次卡顿就可能会导致用户卸载APP,所以说安卓中有一个名词叫做ANR(Application not response),即程序不响应。具体情况有三种:

1:KeyDispatchTimeout(5 seconds) –主要类型 
按键或触摸事件在特定时间内无响应 
2:BroadcastTimeout(10 seconds) 
BroadcastReceiver 在特定时间内无法处理完成 
3:ServiceTimeout(20 seconds)  

Service 在特定的时间内无法处理完成 

而我们的项目又要从服务器频繁获取图片和数据,所以势必会造成很多的网络请求操作,所以我们需要考虑网络请求框架和图片加载框架,使用哪种框架才会更加符合APP的需求,使得APP更加流畅。

一.考虑到逛周的网络数据的传输是轻量级的小数据,所以我们采取适合传输小数据的Volley框架。首先来看一下Volley优点:

  1. 可以取消请求
  2. 容易扩展,面向接口编程
  3. 网络请求线程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,具体实战还要在项目开发中使用和练习。

猜你喜欢

转载自blog.csdn.net/weixin_36317299/article/details/79943976