一行代码快速搞定Flowable断点下载(上)
一行代码快速搞定Flowable断点下载(上)
之前我们大致讲了讲,到底怎么完全将disposable相关代码完全隐藏。
然后到了这里,可能有些杠精就会说了,你那个方式,我们不是完全不能拿到Flowable了吗?那么我想问能不能拿到有什么关系呢?我感觉我们作为开发人员,众多愿景之一就是,希望自己能够尽可能少地进行重复劳动,不是反复拧螺丝钉的问题,如果可以的话,就算是导弹我也希望不要重复地去创造。我们将Flowable的实现细节隐藏起来,就意味着我们对于Flowable的复用已经基本到达了极致,这听起来不是更酷吗?Flowable说到底是基于函数式来达成对于流操作的更大程度的复用的目的,而我们这样的方式,则是进一步将Flowable管道进行了复用。
好啦,让我们继续,今天聊一些什么呢?我不想聊什么中美关系,什么世界疫情,少想一些那些离你太远的东西,多想想如何让自己,让国家更加强大比较好哦。好的,今天就聊聊如何把在抽象Activity类中定义CompositeDisposable这一步看似必要的操作都省略吧。
在前两篇中我们提到,我们可以通过函数式的方式,将方法调用的顺序倒转,这种操作方式在java中实现并不方便,但是在对于函数式充分支持的kotlin却能极为优雅地实现。但是终归脱离不了需要在activity创建初期定义CompositeDisposable用于管理Disposable,然后在Activity被销毁的时候统一回收Disposable的宿命。
或许大家不知道,我本质上是一个非常喜欢偷懒的人,我十分反感重复劳动,所以很多时候我只能勤劳起来,尝试去将我的工作模式优化。
考虑了很久,这次我将注意点集中到了kotlin原生支持的扩展成员变量上。kotlin对于局部变量的获取其实并不是持久化的,而是每次获取都是基于函数计算的。我们不妨来试一试。如下,我们通过拓展方法来给任何类型的变量都设置一个拓展的局部常量test。
package com.ciruy.onion_base.testval Any.test: Doubleget() = Math.random()
然后,我们在单元测试中对这个常量进行连续多次获取。
class ExampleUnitTest {@Testfun addition_isCorrect() {val any = 1println(any.test)println(any.test)println(any.test)println(any.test)println(any.test)println(any.test)}
}
我们可以看见,每次所获取到的结果是不同的。
class ExampleUnitTest {@Testfun addition_isCorrect() {val any = 1println(any.test)println(any.test)println(any.test)println(any.test)println(any.test)println(any.test)}
}
你可能会想,这样不是还是不行吗,如果我每次调用compositeDisposable所获取到的实例都不一样,这样做岂不是一点意义都没有吗?注意,我可没有说,我们仅仅通过拓展变量就打算实现目的。
还记得,我之前所说过的函数式的存储化技术吗?通过他,我们能达到对于相同的输入结果输出完全相同的输出结果的目的。因此,只需要同时基于这两个技术,我们的主要目的就能达成。
一行代码快速搞定Flowable断点下载(上)相关推荐
- 一行代码快速搞定Flowable断点下载(下)
一行代码快速搞定Flowable断点下载(下) 其实这个主题对应的三篇文章真的真的非常难写,首先是感觉非常多人对于函数式编程不太熟悉,然后又有一些人对于kotlin不太熟悉.这就导致了,写这三篇文章的 ...
- 一行代码快速搞定Flowable断点下载(中)
一行代码快速搞定Flowable断点下载(中) 感觉上一篇家常聊了太多,这一篇就直接进入正题,首先来看一下,通过存储化以及方法拓展技术将mComposableDisposable的相关逻辑也从抽象Ac ...
- android 圆形图片设置蒙层,Android引导蒙层,安卓新手引导图,引导图层,支持椭圆,圆形,矩形多种形状,一行代码快速搞定-Go语言中文社区...
新手引导视图,初次打开页面时显示. 支持圆形,椭圆,矩形等多种图形 提示部分支持图片和文字提示 先看效果图 使用步骤. 使用起来特别简单,只需要把GuideView这个类复制到你的项目中就可以了 pa ...
- Android引导蒙层,安卓新手引导图,引导图层,支持椭圆,圆形,矩形多种形状,一行代码快速搞定
新手引导视图,初次打开页面时显示. 支持圆形,椭圆,矩形等多种图形 提示部分支持图片和文字提示 github源码地址:https://github.com/qiushi123/GuideView-ma ...
- [JavaScript]只需一行代码,轻松搞定快捷留言-V2升级版
前天熬了大半宿发了一篇[一行代码轻松搞定快捷留言功能],同时发布了V1.0beta版的快捷留言功能和源代码,之所以是beta版,就是当时感觉虽然基本功能有了,但是还不够完善,特性也不一定合理,今天不知 ...
- 极度丝滑!CentOS/Unbuntu系统下快速设置虚拟内存,一行命令快速搞定!!!
CentOS/Unbuntu系统下快速设置虚拟内存,一行命令搞定 快速开始 #请cd到你机器的执行命令的路径下 cd /usr/local/bin #wget脚本 wget https://gitee ...
- 重磅!百度飞桨开源语音基础模型库|中英文语音识别、语音翻译、语音合成、声音分类通通一行代码轻松搞定...
导读 要说生活里最常见的AI应用场景,语音合成与识别当属大家最为耳熟能详的场景之一了. 寻常到平时地图导航的播报.微信语音转文字.手机语音输入,以及小度智能音箱,都离不开语音技术的加持. 语音技术到底 ...
- 一行代码轻松搞定各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案百度也应用了这种方案去解决IE的兼容问题? 百度源代码如下: <!Doctype html& ...
- 一行代码,搞定浏览器数据库 IndexedDB
作者 | 星尘starx 来源 | https://juejin.cn/post/6918705632757415950 前言 2021 年,如果你的前端应用,需要在浏览器上保存数据,有三个主流方案可 ...
最新文章
- SQL Server大负载的生产环境下的性能优化:初识元数据优化
- 为什么我那么努力,模电还是学不懂?
- 招几个兄弟和我一起做项目
- 洛谷.3919.[模板]可持久化数组(可持久化线段树/平衡树)
- Delphi编程过程中知识累积
- hbase查看表结构_HBase基本使用之DDL学习
- 风控人必知必会的征信知识
- [Java] 蓝桥杯ADV-102 算法提高 单词个数统计
- wxpython播放视频_使用wxpython显示网络摄像头视频闪烁
- LayaAir 缓动动画
- 控制台打印vue实例
- 批量打印证书 php,巧用WPS2013批量打印证书
- 深度剖析Java集合之BitSet
- Revisiting Domain Generalized Stereo Matching Networks from a FeatureConsistency Perspective
- 如何使用CANoe和CANalyzer中的Diagnostics/ISO TP
- 苹果手机上网很慢_手机4G信号满格,上网速度却很慢?原来都是它们在“搞鬼”...
- 南土所褚海燕组综述微生物组学的技术和方法及其应用
- 数学学习与研究杂志数学学习与研究杂志社数学学习与研究编辑部2023年第3期目录
- 1.二分排序——抓老鼠法
- 基于OSM的地图大数据应用开发-1
热门文章
- 不可错过的java面试博客之java集合篇
- vue防抖和节流是什么_防抖和节流为什么重要!!!
- 你在python项目中遇到的问题_魔法02 Python环境可能遇到的问题及解决方案
- 布谷鸟哈希函数的参数_用于并发读密集型的乐观Cuckoo(布谷鸟) Hashing
- rm排除某个文件进行删除
- Selenium之XPATH定位(第二篇)
- php 多长时间前,php 多长时间之前 的函数
- python阶乘匿名函数_python的高阶函数与匿名函数
- 计算机二级题31套资料,计算机等级考试:二级VFP机试第31套
- c语言编程课程心得,c语言编程课程设计心得.docx