android+单例封装,Android应用开发Android 单例模式封装 RxJava+Retrofit 网络请求

本文将带你了解Android应用开发Android 单例模式封装 RxJava+Retrofit 网络请求,希望本文对大家学Android有所帮助。

3752419839d7b632f532c3264b3d23be.png

Android 单例模式封装 RxJava+Retrofit 网络请求。

其实Retrofit和Rx的结合更加契合,直接总结代码,代码里会有注释解释

首先引入依赖

compile 'com.squareup.retrofit2:retrofit:2.2.0'

compile   'com.squareup.retrofit2:converter-gson:2.2.0'

compile   'com.squareup.retrofit2:adapter-rxjava2:2.2.0'

compile   'io.reactivex.rxjava2:rxandroid:2.0.1'

首先是定义一个Retrofit的请求接口,方法返回值为Observable 泛型中的类为该方法请求后要解析成的实体类

public interface Api {

@GET({num}/{page})

ObservablerequestPic(@Path(num) int num, @Path(page) int page);

}

只定义了一个Get请求,Post请求修改注解即可 下面的链接感觉讲的比较仔细 收藏一下

【Android】Retrofit网络请求参数注解,@Path、@Query、@QueryMap...

下面是NetToll单例封装初始化

public class NetTool {

public static NetTool instance;

private Retrofit retrofit;

private final Api api;

public Api getApi() {

return api;

}

private NetTool() {

//初始化Retrofit

retrofit = new   Retrofit.Builder().baseUrl(https://gank.io/api/data/%E7%A6%8F%E5%88%A9/)

//给Retrofit添加Gson解析功能

.addConverterFactory(GsonConverterFactory.create())

//给Retrofit添加Rxjava功能

.addCallAdapterFactory(RxJava2CallAdapterFactory.create())

.build();

//初始化Retrofit的Api接口

api =   retrofit.create(Api.class);

}

//线程锁单例

public static NetTool   getInstance() {

if (instance == null) {

synchronized   (NetTool.class) {

if (instance == null)   {

instance = new   NetTool();

}

}

}

return instance;

}

}

最后是在Activity中调用

NetTool.getInstance().getApi()

//填入方法中占位的请求参数

.requestPic(50,1)

//切换线程

.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

.subscribe(new   Consumer() {

@Override

public void   accept(PictureBean pictureBean) throws Exception {

//请求成功并获取PictureBean解析成功

}

}, new   Consumer() {

@Override

public void   accept(Throwable throwable) throws Exception {

//异常捕获

}

});

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值