上一篇文章讲述了Retrofit的基本使用,包括GET,POST等请求.今天的文章中Retrofit要与RxJava配合使用.
了解RxJava
RxJava有种种好处,我不在这里一一讲述.这里我只给出一个使用RxJava的例子.
接下来的文章,我也会写RxJava的进一步使用的.
案例说明
该例子是获取手机上安装的APP,然后列表显示包括名称,图标,安装时间等信息.
上代码
下面是自定义的AppInfo
类,包含名称,图标,安装时间,版本号,版本名称等属性.
[代码]java代码:
010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | |
下面是获取AppLie表的代码,封装为工具类使用:
[代码]java代码:
010203040506070809101112131415161718192021222324252627282930313233 | |
不使用RxJava怎么做?
我们在不适用RxJava时怎么做?通常新建一个子线程去执行任务,然后回调更新界面,对不对?
[代码]java代码:
01020304050607080910111213141516171819 | |
使用RxJava
使用RxJava是这样来写代码的:
1.创建Observable
[代码]java代码:
010203040506070809101112 | |
2.在界面出调用
[代码]java代码:
01020304050607080910111213141516171819202122232425 | |
看结果
这个Demo的源码在此:RxJavaDemo
在Retrofit中使用RxJava
上次我们获取手机的归属地时的PhoneService
中是这样写的:
[代码]java代码:
123 | |
返回了一个Call对象,使用RxJava我们则返回一个可被观测的PhoneResult
:Observable<PhoneResult>
,如下:
[代码]java代码:
123 | |
为了能返回此对象,我们需要在创建Retrofit对象时添加一个RxJava对象的Adapter来自动完成:
[代码]java代码:
12345 | |
为此,还封装了一个单例模式的PhoneApi
类:
[代码]java代码:
01020304050607080910111213141516171819202122232425262728293031323334353637383940414243444546 | |
下面就是使用去获取手机的归属地啦:
[代码]java代码:
01020304050607080910111213141516171819 | |
运行一下吧,结果是同样的哈.