昨天相信所有人的朋友圈都被刷屏了,微信憋了许久的大招“应用号”终于开放小范围邀请式内测,并暂定命名为“小程序”。“小程序”的特点是使用方便,无须下载或安装应用,可能只需要扫一扫二维码就能够立即使用了。另外,开发语言是使用的HTML5+JS,相比于Android和iOS双终端开发,“小程序”的开发成本将会低很多。
那么有人也许会担心,“小程序”的出现会不会颠覆本地App的开发?这里我给出一个我的观点,“小程序”毫无疑问肯定会抢占本地App的市场份额,但如果说要颠覆,那还差得远呢。首先从它的命名上面看,“小程序”已经限定在“小”这个字上了,也就是说,一些功能简单的小应用,原本要独立开发出一个App的,现在非常适合入驻“小程序”平台,但是像QQ、淘宝这样的大程序,显示是不可能被微信收编的。另外,微信虽说有8亿用户,但毕竟也只是一个应用而已,平台还是Google和苹果的,尤其是像苹果这样的封闭式平台,很大一部分收入都是靠的第三方应用,如果将它的蛋糕都抢没了,苹果完全有可能将微信封杀掉。
另外,拒小道消息称,微信已经和苹果约法三章了,“小程序”一不碰游戏、二不碰直播,而且每个用户最多只能关注20个小程序号,算是双方都各退了一步。
度过了漫长的一周,明天终于可以放松休息一下了,这里提前祝大家周末愉快。
本篇是 Tamic(码小白) 的第二篇投稿,他的第一篇与大家分享了他在大公司的面试经验。今天他给大家带来了自己针对 Retrofit 结合 RxJava 的开源框架 Novate,让我们赶快来看一看吧~
Tamic(码小白) 的博客地址:
http://www.jianshu.com/users/3bbb1ddf4fd5
用过 RxJava 和 Retrofit 的朋友,用久了就会发现 Retrofit 说难吗 也不难,说简单吗 又不简单,对于实际项目中,单纯的用 Retrofit 做请求库,开发起来还是很多不便,必须要对请求头和参数处理,API接口 数目众多时的处理起来也不便, Https证书验签,cookie持久,错误结果码处理,统一操作加载过渡UI 等,因此我对 Retrofit 再次进行了封装。
一直关注我的朋友以前看我封装的《 基于Retrofit2.0 封装的超好用的RetrofitClient工具类》的一文(这里指投稿作者的博客文章),已对 Retrofit 结合 RxJava 时遇到上面的问题进行了完整封装,但不是 Builder模式,因此感觉还是有点土,特此我进行了长达两个月 Novate 框架的开发。
为何起名为Novate?
Novate 的英文原意是用新事物代替 ,我开发目的是用新的东西来代替 Retrofit 的有些不易操作的地方,因此起名新奇的东西,所以结合了原来的Http用法习惯,又加入了 Retrofit 和 RxJava 的特性,因此起名 :Novate。
*继续阅读本文最好先了解 Retrofit 和 Rxjava。
Novate 的改进:
加入基础API,减少Api冗余
支持离线缓存 无网络智能加载缓存
支持多种方式访问网络(get, put, post ,delete)
支持文件下载和上传
支持请求头参数统一添加
支持对返回结果的统一处理
支持自定义的扩展API,默认Api无法满足时可自定义
支持统一请求访问网络的流程控制,帮你自动启动 过渡Loading ,Processbar 支持从外部自定义。
基本构建:
Novate novate = new Novate.Builder(this)
.baseUrl(baseUrl)
.build();
除了基本的构建还提供更了其他API:
//构建你的header头和参数
Map headers = new HashMap();
headers.put("apikey", "4545sdsddfd7sds");
Map parameters = new HashMap();
parameters.put("uid", "878787878sdsd");
实例化:
Novate novate = new Novate.Builder(this)
.addParameters(parameters)
.connectTimeout(8)
.baseUrl("you api url")
.addHeader(headers)
.addLog(true)
.build();
如果你需要接入证书:
novate.addSSL(hosts, certificates)
怎么用?
int[] certificates = {R.raw.myssl1, R.raw.myssl2,......}
int[] hosts = {"https:// you hosturl2", "https:// you hosturl2",......}
还要说明?
certificates 是你的 ssl证书文件的id,项目中请放到 raw资源文件下,myssl.cer 怎么生成,这个就不是我这边讲的内容,请用pc浏览器自动导出证书,保存, 还不清楚的话,我会醉醉。
同样很多人想问 我想对 novate 进行扩展,咋办,别担心,Novate 也提供了以下方法:
novate.addInterceptor()
.addCallAdapterFactory()
.callFactory()
.client()
不知道啥意思?
请对 Retrofit 去入门,Retrofit 中怎么用,Novate 就怎么用。
RxJava 怎么处理?
observable.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
内部统一已进行线程控制,所有请求都采用以上线程形式,无需你手动添加。
提供了 novate.executeGet() 和 novate.get() API,区别如下:
如果你不需要 Novate 帮你解析返回的数据 则调用 novate.get():
提供了 novate.post() 和 novate.executePost() 两个 API。
区别如下:
post 和 get 代码用法很相似:
novate.post():
novate.executePost():
put 方式则提供了 novate.put() 和 novate.executePut() 两个API,区别和用法参考上面 Get 和 Put。
同样对 delete 提供了novate.delete() 和 novate.executeDelete() 两个API,区别和用法参考上面 Get 和 Put。
当然 novate 特提供了可供上传文件的API novate.upload():
如果说有上传文件的接口,必定有下载文件的接口,同样 novate 也提供了下载文件API novate.download():
以上方法默认会处理 Novate 自带的 BaseApiService,如果默认的BaseApiService 无法满足你的需求时,Novate 同样支持你自己的 ApiService。
定义一个你自己的API:
通过 novate 提供 create() 实例化你的API:
MyAPI myAPI = novate.create(MyAPI.class);
通过 novate.call() 来执行你的接口,你也不用关心,novate 内部同样已进行 RxJava 线程控制:
如果你对本框架有无法满足你的需求或有何更好的想法,请及时联系我进行交流,谢谢您的支持!欢迎您的star. Tamic期待更多的技术大牛开车指导!
GitHub:
https://github.com/NeglectedByBoss/Novate