一行代码快速搞定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断点下载(上)相关推荐

  1. 一行代码快速搞定Flowable断点下载(下)

    一行代码快速搞定Flowable断点下载(下) 其实这个主题对应的三篇文章真的真的非常难写,首先是感觉非常多人对于函数式编程不太熟悉,然后又有一些人对于kotlin不太熟悉.这就导致了,写这三篇文章的 ...

  2. 一行代码快速搞定Flowable断点下载(中)

    一行代码快速搞定Flowable断点下载(中) 感觉上一篇家常聊了太多,这一篇就直接进入正题,首先来看一下,通过存储化以及方法拓展技术将mComposableDisposable的相关逻辑也从抽象Ac ...

  3. android 圆形图片设置蒙层,Android引导蒙层,安卓新手引导图,引导图层,支持椭圆,圆形,矩形多种形状,一行代码快速搞定-Go语言中文社区...

    新手引导视图,初次打开页面时显示. 支持圆形,椭圆,矩形等多种图形 提示部分支持图片和文字提示 先看效果图 使用步骤. 使用起来特别简单,只需要把GuideView这个类复制到你的项目中就可以了 pa ...

  4. Android引导蒙层,安卓新手引导图,引导图层,支持椭圆,圆形,矩形多种形状,一行代码快速搞定

    新手引导视图,初次打开页面时显示. 支持圆形,椭圆,矩形等多种图形 提示部分支持图片和文字提示 github源码地址:https://github.com/qiushi123/GuideView-ma ...

  5. [JavaScript]只需一行代码,轻松搞定快捷留言-V2升级版

    前天熬了大半宿发了一篇[一行代码轻松搞定快捷留言功能],同时发布了V1.0beta版的快捷留言功能和源代码,之所以是beta版,就是当时感觉虽然基本功能有了,但是还不够完善,特性也不一定合理,今天不知 ...

  6. 极度丝滑!CentOS/Unbuntu系统下快速设置虚拟内存,一行命令快速搞定!!!

    CentOS/Unbuntu系统下快速设置虚拟内存,一行命令搞定 快速开始 #请cd到你机器的执行命令的路径下 cd /usr/local/bin #wget脚本 wget https://gitee ...

  7. 重磅!百度飞桨开源语音基础模型库|中英文语音识别、语音翻译、语音合成、声音分类通通一行代码轻松搞定...

    导读 要说生活里最常见的AI应用场景,语音合成与识别当属大家最为耳熟能详的场景之一了. 寻常到平时地图导航的播报.微信语音转文字.手机语音输入,以及小度智能音箱,都离不开语音技术的加持. 语音技术到底 ...

  8. 一行代码轻松搞定各种IE兼容问题,IE6,IE7,IE8,IE9,IE10

    在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案百度也应用了这种方案去解决IE的兼容问题? 百度源代码如下: <!Doctype html& ...

  9. 一行代码,搞定浏览器数据库 IndexedDB

    作者 | 星尘starx 来源 | https://juejin.cn/post/6918705632757415950 前言 2021 年,如果你的前端应用,需要在浏览器上保存数据,有三个主流方案可 ...

最新文章

  1. SQL Server大负载的生产环境下的性能优化:初识元数据优化
  2. 为什么我那么努力,模电还是学不懂?
  3. 招几个兄弟和我一起做项目
  4. 洛谷.3919.[模板]可持久化数组(可持久化线段树/平衡树)
  5. Delphi编程过程中知识累积
  6. hbase查看表结构_HBase基本使用之DDL学习
  7. 风控人必知必会的征信知识
  8. [Java] 蓝桥杯ADV-102 算法提高 单词个数统计
  9. wxpython播放视频_使用wxpython显示网络摄像头视频闪烁
  10. LayaAir 缓动动画
  11. 控制台打印vue实例
  12. 批量打印证书 php,巧用WPS2013批量打印证书
  13. 深度剖析Java集合之BitSet
  14. Revisiting Domain Generalized Stereo Matching Networks from a FeatureConsistency Perspective
  15. 如何使用CANoe和CANalyzer中的Diagnostics/ISO TP
  16. 苹果手机上网很慢_手机4G信号满格,上网速度却很慢?原来都是它们在“搞鬼”...
  17. 南土所褚海燕组综述微生物组学的技术和方法及其应用
  18. 数学学习与研究杂志数学学习与研究杂志社数学学习与研究编辑部2023年第3期目录
  19. 1.二分排序——抓老鼠法
  20. 基于OSM的地图大数据应用开发-1

热门文章

  1. 不可错过的java面试博客之java集合篇
  2. vue防抖和节流是什么_防抖和节流为什么重要!!!
  3. 你在python项目中遇到的问题_魔法02 Python环境可能遇到的问题及解决方案
  4. 布谷鸟哈希函数的参数_用于并发读密集型的乐观Cuckoo(布谷鸟) Hashing
  5. rm排除某个文件进行删除
  6. Selenium之XPATH定位(第二篇)
  7. php 多长时间前,php 多长时间之前 的函数
  8. python阶乘匿名函数_python的高阶函数与匿名函数
  9. 计算机二级题31套资料,计算机等级考试:二级VFP机试第31套
  10. c语言编程课程心得,c语言编程课程设计心得.docx