目前主要的安卓网络框架有okhttp,retrofit,android-async-http,volley。
其中,retrofit底层基于okhttp来实现,内部对OkHtttp客户端做了封装。
Retrofit介绍
1,Retrofit使用注解方式,简化了我们的URL拼写形式,而且注解含义一目了然,简单易懂;
2,Retrofit使用简单,结构层次分明,每一步都能清晰的表达出之所以要使用的寓意;
3,Retrofit支持同步和异步执行,使得请求变得简单,只要调用enqueue/execute即可完成;
4,Retrofit更大自由度的支持我们自定义的业务逻辑,如自定义Converters。
如何使用Retrofit进行网络请求
1,添加Retrofit依赖
2,创建 用于描述网络请求 的接口
3,创建 Retrofit 实例
4,创建 网络请求接口实例 并 配置网络请求参数
5,发送网络请求
Glided图片加载框架常用方法:
1、加载图片到imageView
Glide.with(Context context).load(Strint url).into(ImageView imageView);
2、各种形式的图片加载到ImageView
// 加载本地图片
File file = new File(getExternalCacheDir() + "/image.jpg");
Glide.with(this).load(file).into(imageView);
// 加载应用资源
int resource = R.drawable.image;
Glide.with(this).load(resource).into(imageView);
// 加载二进制流
byte[] image = getImageBytes();
Glide.with(this).load(image).into(imageView);
// 加载Uri对象
Uri imageUri = getImageUri();
Glide.with(this).load(imageUri).into(imageView)
3、加载动态图片
Glide.with(this)
.load(url)
.asGif()//加载动态图片,若现有图片为非gif图片,则直接加载错误占位图。
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.into(imageView);
4、加载指定大小的图片
Glide.with(this)
.load(url)
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.override(100, 100)//指定图片大小
.into(imageView);
RxJava是什么?
在其github上是这样讲的:一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库。这么讲可能还有点绕口,简单的讲实际上最重要的就是异步两字,RxJava可以简单的实现异步操作,并且不管逻辑多么复杂,它始终能够保持简洁性。
通常在Android中,非UI线程是不能更新UI界面的,而一些耗时的操作我们又不能放在UI线程,否则会导致界面卡顿。这种情况下,我们就需要切换线程来实现,即Handler和AsyncTask来实现,但是这两种都有个缺陷,代码非常多,非常杂,可读性非常差。所以,RxJava出现了,它能够两行代码就实现线程切换,非常的简单,使用起来就会让人感觉很爽,再也不用为异步操作写如此繁重的代码了。
RxJava基本用法
RxJava最核心的两个东西是Observables(被观察者,事件源)和Observer/Subscriber(观察者),还有将他们联系在一起的操作subscribe(订阅)。当被观察者发生变化时观察者能即使做出相应,就好像我们的按钮事件一样:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
RxJava的操作符
RxJava一个强大的地方在于它的异步,另外一个强大的地方就在于它提供了强大的操作符支持。