首先我们看一下Retrofit常规的用法,在不使用Rxjava的情况下,我们默认返回的是Call。
public interface ServiceApi {
//下载文件
@GET
Call<ResponseBody> downloadPicFromNet(@Url String fileUrl);
}
但是如果我们要配合Rxjava使用,那么就要按照如下方式来重新定义我们的方法:
@GET Observable<ResponseBody> downloadPicFromNet(@Url String fileUrl);
返回一个Observable,方法名很直观就是从网络下载图片 参数是图片的URL路径
完成请求接口的定义,我们接下来创建Retrofit 对象
Retrofit retrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) //添加Rxjava .addConverterFactory(GsonConverterFactory.create()) // <span style="font-family: Arial, Helvetica, sans-serif;">定义转化器 可以将结果返回一个json格式</span> .build();
接下来我们给刚才定义的ServiceApi创建实例,通过上面创建的retrofit来创建
ServiceApi serviceApi = retrofit.create(ServiceApi.class);
ok,现在我们可以通过serviceApi来调用我们刚才定义的 downloadPicFromNet方法来下载一张图片,可以随意百度一张图片,复制图片地址来做测试。
serviceApi.downloadPicFromNet("http://pic41.nipic.com/20140509/4746986_145156378323_2.jpg")
.subscribeOn(Schedulers.newThread())//在新线程中实现该方法
.map(new Func1<ResponseBody, Bitmap>() {
@Override
public Bitmap call(ResponseBody arg0) {
if(saveFileToDisc(arg0)) {//保存图片成功
Bitmap bitmap = BitmapFactory.decodeFile(getExternalFilesDir(null) + File.separator + "baidu.png");
return bitmap;//返回一个bitmap对象
}
return null;
}
})
.observeOn(AndroidSchedulers.mainThread())//在Android主线程中展示
.subscribe(new Subscriber<Bitmap>() {
ProgressDialog dialog = new ProgressDialog(MainActivity.this);
@Override
public void onStart() {
dialog.show();
super.onStart();
}
@Override
public void onCompleted() {
dialog.dismiss();
}
@Override
public void onError(Throwable arg0) {
Log.d(TAG, "onError ===== " + arg0.toString());
}
@Override
public void onNext(Bitmap arg0) {
imageIv.setImageBitmap(arg0);
}
});
上面的示例就实现了一个下载、保存、并展示的过程,跟传统的AsyncTask相比,代码很简洁,没有很多回调。当然在实际使用中还可以封装一层,把Retrofit 和 ServiceApi 的创建放在一个ServiceApiImpl的实现类中。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Retrofit
# Rxjava图片下载
# Rxjava实现图片下
# 基于Ok+Rxjava+retrofit实现断点续传下载
# Retrofit+RxJava实现带进度下载文件
# 基于Retrofit+Rxjava实现带进度显示的下载文件
# Retrofit+Rxjava下载文件进度的实现
# Retrofit+Rxjava实现文件上传和下载功能
# RxJava+Retrofit+OkHttp实现多文件下载之断点续传
# RxJava2.x+ReTrofit2.x多线程下载文件的示例代码
# Retrofit+RxJava实现带进度条的文件下载
# 的是
# 放在
# 还可以
# 是从
# 我们可以
# 来做
# 看一下
# 方法来
# 回调
# 大家多多
# 类中
# 下载图片
# 实现了
# 情况下
# 在实际
# addConverterFactory
# create
# GsonConverterFactory
# style
# span
相关文章:
昆明高端网站制作公司,昆明公租房申请网上登录入口?
如何破解联通资金短缺导致的基站建设难题?
如何选择香港主机高效搭建外贸独立站?
专业网站建设制作报价,网页设计制作要考什么证?
建站之星如何实现PC+手机+微信网站五合一建站?
建站之星在线客服如何快速接入解答?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
定制建站是什么?如何实现个性化需求?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
如何通过多用户协作模板快速搭建高效企业网站?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
网站制作员失业,怎样查看自己网站的注册者?
SQL查询语句优化的实用方法总结
如何通过万网虚拟主机快速搭建网站?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
建站之星3.0如何解决常见操作问题?
个人摄影网站制作流程,摄影爱好者都去什么网站?
定制建站流程解析:需求评估与SEO优化功能开发指南
沈阳制作网站公司排名,沈阳装饰协会官方网站?
建站主机SSH密钥生成步骤及常见问题解答?
建站之星2.7模板:企业网站建设与h5定制设计专题
网站制作公司排行榜,抖音怎样做个人官方网站
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
网站代码制作软件有哪些,如何生成自己网站的代码?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
如何通过服务器快速搭建网站?完整步骤解析
如何高效利用200m空间完成建站?
常州自助建站工具推荐:低成本搭建与模板选择技巧
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
网站制作话术技巧,网站推广做的好怎么话术?
如何零基础开发自助建站系统?完整教程解析
南京网站制作费用,南京远驱官方网站?
济南专业网站制作公司,济南信息工程学校怎么样?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
如何通过智能用户系统一键生成高效建站方案?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
网站制作软件免费下载安装,有哪些免费下载的软件网站?
MySQL查询结果复制到新表的方法(更新、插入)
Python路径拼接规范_跨平台处理说明【指导】
山东网站制作公司有哪些,山东大源集团官网?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
如何快速生成凡客建站的专业级图册?
孙琪峥织梦建站教程如何优化数据库安全?
大连网站设计制作招聘信息,大连投诉网站有哪些?
*请认真填写需求信息,我们会在24小时内与您取得联系。