RxVolley使用文档—— RxVolley = Volley ,微信小程序的事件处理

这篇具有很好参考价值的文章主要介绍了RxVolley使用文档—— RxVolley = Volley ,微信小程序的事件处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

对 RxJava 的支持


RxVolley 支持返回一个 Observable<Result> 类型的数据,如下是 Result 类的原型

public class Result {

public String url;

public byte[] data;

public VolleyError error;

public Map<String, String> headers;

public int errorCode;

}

执行一次请求,并返回 Observable


Observable observable = new RxVolley.Builder()

.url(“http://www.kymjs.com/rss.xml”)

//default GET or POST/PUT/DELETE/HEAD/OPTIONS/TRACE/PATCH

.httpMethod(RxVolley.Method.POST)

.cacheTime(6) //default: get 5min, post 0min

.params(params)

.contentType(RxVolley.ContentType.JSON)

.getResult(); // 使用getResult()来返回RxJava数据类型

//当拿到 observable 对象后,你可以设置你自己的 subscriber

observable.subscribe(subscriber);

完整的使用示例


public class MainActivity extends AppCompatActivity {

private Subscription subscription;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Observable observable = new RxVolley.Builder()

.url(“http://kymjs.com/feed.xml”)

.contentType(RxVolley.ContentType.FORM)

.getResult();

subscription = observable

.map(new Func1<Result, String>() {

@Override

public String call(Result result) {

return new String(result.data);

}

})

.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

.subscribe(new Subscriber() {

@Override

public void onCompleted() {

Log.i(“kymjs”, “======网络请求结束”);

}

@Override

public void onError(Throwable e) {

Log.i(“kymjs”, “======网络请求失败” + e.getMessage());

}

@Override

public void onNext(String s) {

Log.i(“kymjs”, “======网络请求” + s);

}

});

}

@Override

protected void onDestroy() {

super.onDestroy();

if (subscription != null && subscription.isUnsubscribed()) {

subscription.unsubscribe();

}

}

}

自定义请求


也许你是 Volley 的重度使用者(就像我),那么你一定是因为 Volley 自由的扩展性而爱上它的。

你可以通过创建一个Request<?>的子类,自由配置请求策略,缓存策略,数据传输加密,重试策略等。

最后通过

RxVolley.Builder().setRequest(yourRequest).doTask();

去执行你的自定义 Request

一个典型自定义Request的示例:

/**

  • Form表单形式的Http请求

*/

public class FormRequest extends Request<byte[]> {

private final HttpParams mParams;

public FormRequest(RequestConfig config, HttpParams params, HttpCallback callback) {

super(config, callback);

if (params == null) {

params = new HttpParams();

}

this.mParams = params;

}

@Override

public String getCacheKey() {

if (getMethod() == RxVolley.Method.POST) {

return getUrl() + mParams.getUrlParams();

} else {

return getUrl();

}

}

@Override

public String getBodyContentType() {

if (mParams.getContentType() != null) {

return mParams.getContentType();

} else {

return super.getBodyContentType();

}

}

@Override

public ArrayList getHeaders() {

return mParams.getHeaders();

}

@Override

public byte[] getBody() {

ByteArrayOutputStream bos = new ByteArrayOutputStream();

try {

mParams.writeTo(bos);

} catch (IOException e) {

Loger.debug(“FormRequest#getBody()—>IOException writing to ByteArrayOutputStream”);

}

return bos.toByteArray();

}

@Override

public Response<byte[]> parseNetworkResponse(NetworkResponse response) {

return Response.success(response.data, response.headers,

HttpHeaderParser.parseCacheHeaders(getUseServerControl(), getCacheTime(),

response));

}

@Override

protected void deliverResponse(ArrayList headers, final byte[] response) {

if (mCallback != null) {

HashMap<String, String> map = new HashMap<>(headers.size());

for (HttpParamsEntry entry : headers) {

map.put(entry.k, entry.v);

}

mCallback.onSuccess(map, response);

}

}

@Override

public Priority getPriority() {

return Priority.IMMEDIATE;

}

}

文件(图片)下载


利用 RxVolley 的自定义请求,在库中内置了文件下载功能。你可以使用

//下载进度(可选参数,不需要可不传)

listener = new ProgressListener() {

@Override

public void onProgress(long transferredBytes, long totalSize) {

Loger.debug(transferredBytes + “======” + totalSize);

}

}

//下载回调,内置了很多方法,详细请查看源码

//包括在异步响应的onSuccessInAsync():注不能做UI操作

//下载成功时的回调onSuccess()

//下载失败时的回调onFailure():例如无网络,服务器异常等

HttpCallback callback = new HttpCallback(){

@Override

public void onSuccessInAsync(byte[] t) {

}

@Override

public void onSuccess(String t) {

}

@Override

public void onFailure(int errorNo, String strMsg) {

}

}

RxVolley.download(FileUtils.getSDCardPath() + “/a.apk”,

“https://www.oschina.net/uploads/osc-android-app-2.4.apk”,

listener, callback);

download()原型

既然说了下载功能是利用 RxVolley 的自定义请求创建的,不妨看看他的方法实现:

/**

  • 下载

  • @param storeFilePath 本地存储绝对路径

  • @param url 要下载的文件的url

  • @param progressListener 下载进度回调

  • @param callback 回调

*/

public static void download(String storeFilePath, String url, ProgressListener

progressListener, HttpCallback callback) {

RequestConfig config = new RequestConfig();

config.mUrl = url;

FileRequest request = new FileRequest(storeFilePath, config, callback);

request.setOnProgressListener(progressListener);

new Builder().setRequest(request).doTask();

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
RxVolley使用文档—— RxVolley = Volley ,微信小程序的事件处理,2024年程序员学习,微信小程序,小程序
RxVolley使用文档—— RxVolley = Volley ,微信小程序的事件处理,2024年程序员学习,微信小程序,小程序
RxVolley使用文档—— RxVolley = Volley ,微信小程序的事件处理,2024年程序员学习,微信小程序,小程序
RxVolley使用文档—— RxVolley = Volley ,微信小程序的事件处理,2024年程序员学习,微信小程序,小程序
RxVolley使用文档—— RxVolley = Volley ,微信小程序的事件处理,2024年程序员学习,微信小程序,小程序
RxVolley使用文档—— RxVolley = Volley ,微信小程序的事件处理,2024年程序员学习,微信小程序,小程序
RxVolley使用文档—— RxVolley = Volley ,微信小程序的事件处理,2024年程序员学习,微信小程序,小程序

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
RxVolley使用文档—— RxVolley = Volley ,微信小程序的事件处理,2024年程序员学习,微信小程序,小程序

总结

**其实上面说了这么多,钱是永远赚不完的,在这个知识付费的时代,知识技能提升才是是根本!我作为一名8年的高级工程师,知识技能已经学习的差不多。**在看这篇文章的可能有刚刚入门,刚刚开始工作,或者大佬级人物。

像刚刚开始学Android开发小白想要快速提升自己,最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以这里分享一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。

这么重要的事情说三遍啦!点赞+点赞+点赞!
RxVolley使用文档—— RxVolley = Volley ,微信小程序的事件处理,2024年程序员学习,微信小程序,小程序

【Android高级架构师系统学习资料】高级架构师进阶必备——设计思想解读开源框架

第一章、热修复设计
第二章、插件化框架设计
第三章、组件化框架设计
第四章、图片加载框架
第五章、网络访问框架设计
第六章、RXJava 响应式编程框架设计
第七章、IOC 架构设计
第八章、Android 架构组件 Jetpack

总结

**其实上面说了这么多,钱是永远赚不完的,在这个知识付费的时代,知识技能提升才是是根本!我作为一名8年的高级工程师,知识技能已经学习的差不多。**在看这篇文章的可能有刚刚入门,刚刚开始工作,或者大佬级人物。

像刚刚开始学Android开发小白想要快速提升自己,最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以这里分享一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。

这么重要的事情说三遍啦!点赞+点赞+点赞!
[外链图片转存中…(img-QXMRTMla-1711803761303)]

【Android高级架构师系统学习资料】高级架构师进阶必备——设计思想解读开源框架

第一章、热修复设计
第二章、插件化框架设计
第三章、组件化框架设计
第四章、图片加载框架
第五章、网络访问框架设计
第六章、RXJava 响应式编程框架设计
第七章、IOC 架构设计
第八章、Android 架构组件 Jetpack

[外链图片转存中…(img-7vupE7eV-1711803761303)]

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录文章来源地址https://www.toymoban.com/news/detail-850493.html

到了这里,关于RxVolley使用文档—— RxVolley = Volley ,微信小程序的事件处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序onReachBottom事件使用

    在微信小程序中,onReachBottom事件用于监听页面滚动到页面底部的时候触发的事件。当用户滑动页面到底部时,可以通过监听该事件来执行相应的操作。 要使用onReachBottom事件,需要在对应的页面或组件中定义一个函数,并在Page或Component的生命周期函数中注册该事件。 下面是

    2024年02月08日
    浏览(36)
  • 微信小程序 button按钮怎么触发事件? bindtap语法怎么使用?

    在前端网页中我们需要触发一个事件如果按钮点击后调用函数,文本、图片、链接被点击后调用一个函数一个事件,我们都知道用click,可是微信小程序中的click是不存在的, 他怎么才能和网页中一样的使用click的呢? 这时候有人肯定会问,我不是来学习click的怎么教我bindt

    2024年01月16日
    浏览(116)
  • 【微信小程序】使用WxNotificationCenter实现复杂的事件通信功能,在任意页面中订阅事件、发送事件和取消订阅事件

    在微信小程序中,如果需要实现复杂的事件通信功能,可以使用第三方库来辅助实现。以下是一些常用的第三方库示例: WxNotificationCenter Github地址(https://github.com/icindy/WxNotificationCenter) WxNotificationCenter是一个基于发布/订阅模式的事件通知库,可以在微信小程序中实现跨页面

    2024年02月16日
    浏览(44)
  • 微信小程序使用webview打开pdf文档及显示网页内容

    一、微信小程序根据接口返回的pdf链接,在小程序内部浏览pdf内容 需要用到微信小程序的两个api 下载资源到本地 wx.downloadFile wx.openDocument 前一个api下载资源到本地,后一个api打开pdf文档 二、根据网页链接,把网页内容在微信小程序内部显示 需要用到微信小程序的一个标签

    2024年02月09日
    浏览(58)
  • 【微信小程序】使用全局事件实现在不同页面之间共享数据或触发特定的操作

    在微信小程序中,你可以使用全局事件来实现在不同页面之间共享数据或触发特定的操作。以下是一个示例代码: 在app.js文件中,定义全局事件: 在上述代码中,我们在App对象中定义了globalData对象,用于存储全局数据。同时,我们定义了onLaunch方法,在小程序初始化时执行

    2024年02月16日
    浏览(47)
  • 使用微信开发工具开发微信小程序(二)——协同工作、发布与事件绑定

    1.了解项目成员的组织结构 2.小程序开发流程 3.不同项目成员的权限 4.开发者权限 开发者权限 :可使用小程序开发者工具及对小程序的功能进行代码。 开发体验者权限 :可使用体验版小程序。 登录权限 :可登录小程序管理后台,无需管理员确认。 开发设置 :设置小程序服务器

    2024年02月09日
    浏览(126)
  • 【微信小程序】使用 WebSocket 进行订阅操作、连接监听、接收到服务器的消息事件

    在微信小程序中使用 WebSocket 进行订阅操作,可以通过 wx.connectSocket 方法创建 WebSocket 连接,并通过相关事件处理函数进行订阅和数据处理。 以下是一个示例代码,演示了在微信小程序中使用 WebSocket 进行订阅: 在上述代码中,我们首先使用 wx.connectSocket 方法创建 WebSocket 连接

    2024年02月16日
    浏览(62)
  • 《微信小程序案例4》bindtap点击事件使用自定义数据data-xxx传参方法

    1、首先在标签中使用data-xxx来自定义要传入的数据,xxx代表数据值 2、绑定事件bindtap=xxx 3、在js中使用event.currentTarget.dataset.xxx来取你传入的值 点击结果成功:

    2024年02月13日
    浏览(62)
  • 微信小程序项目实战 微信小程序的事件对象

    目录 小程序前后端交互 自定义组件的使用 语法说明 properties 定义 案例  微信小程序的事件对象 e.target和e.currentTarget  微信小程序的事件传参 传参方式一: data-key=\\\'value\\\' 传参方式二: id=\\\'value\\\' scroll-view 使用  scroll-view 中使用flex布局 scroll-into-view 下拉刷新 上拉加载 微信小程

    2024年02月09日
    浏览(129)
  • 使用 Moment.js 日期处理库的微信小程序

    在微信小程序开发中,日期和时间的处理是一个常见的需求。Moment.js 是一个强大的日期处理库,它提供了许多方便的功能和方法,可以帮助我们在小程序中轻松地处理日期和时间。本文将介绍如何在微信小程序中引入和使用 Moment.js。 下载 Moment.js 首先,我们需要下载 Moment

    2024年02月22日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包