我的博客

  • Flow是如何解决背压问题的

    前言随着时间的推移,越来越多的主流应用已经开始全面拥抱Kotlin,协程的引入,Flow的诞生,给予了开发很多便捷,作为协程与响应式编程结合的流式处理框架,一方面它简单的数据转换与操作符,没有繁琐的操作符处理,广受大部分开发的青睐,另一方面它并没有响应式编程带来的背压问题(BackPressure)的困扰;接下来,本文将会就Flow如何解决背压问题进行探讨关于背压(BackPressure)背压问

    2022-12-16 michael007js 96

  • 写业务不用架构会怎么样?(三)

    复杂度软件的首要技术使命是“管理复杂度” —— 《代码大全》因为低复杂度才能降低理解成本和沟通难度,提升应对变更的灵活性,减少重复劳动,最终提高代码质量。架构的目的在于“将复杂度分层”复杂度为什么要被分层?若不分层,复杂度会在同一层次展开,这样就太 ... 复杂了。举一个复杂度不分层的例子:小李:“你会做什么菜?”小明:“我会做用土鸡生的土鸡蛋配上切片的番茄,放点油盐,开火翻炒的番茄炒蛋。”听了小

    2022-12-14 michael007js 49

  • Android斩首行动—滑动冲突

    前言作为一名移动开发,我们对滑动冲突可以说是屡见不鲜。虽然Android已经提供了诸如NestedScrollView、CoordinatorLayout等支持嵌套滑动的组件,但其实并不能覆盖所有的滑动场景,我们终归会遇到需要自己去解决的滑动冲突。这篇文章将阐述如何处理常见的滑动冲突,而滑动冲突的处理本质上就是处理事件分发,所以我们从事件分发讲起,一步一步斩首滑动冲突。事件分发何为事件分发?事件指

    2022-12-09 michael007js 239

  • 安卓自定义View进阶-手势检测(GestureDetector)

    在开发 Android 手机应用过程中,可能需要对一些手势作出响应,如:单击、双击、长按、滑动、缩放等。这些都是很常用的手势。就拿最简单的双击来说吧,假如我们需要判断一个控件是否被双击(即在较短的时间内快速的点击两次),似乎是一个很容易的任务,但仔细考虑起来,要处理的细节问题也有不少,例如:记录点击次数,为了判断是否被点击超过 1 次,所以必须记录点击次数。记录点击时间,由于双击事件是较快速的点击

    2022-12-09 michael007js 466

  • 安卓自定义View进阶-事件分发机制详解

    Android 事件分发机制详解,在上一篇文章 事件分发机制原理 中简要分析了一下事件分发机制的原理,原理是十分简单的,一句话就能总结:责任链模式,事件层层传递,直到被消费。 虽然原理简单,但是随着 Android 不断的发展,实际运用场景也越来越复杂,所以想要彻底玩转事件分发机制还需要一定技巧,本篇事件分发机制详解将带大家了解 …你以为我接下来要讲源码? 我就不按套路,所有的源码都是为了适应具体

    2022-12-09 michael007js 101

  • 安卓自定义View进阶-事件分发机制原理

    注意:本文中所有源码分析部分均基于 API23(Android 6.0) 版本,由于安卓系统源码改变很多,可能与之前版本有所不同,但基本流程都是一致的。为什么要有事件分发机制?安卓上面的View是树形结构的,View可能会重叠在一起,当我们点击的地方有多个View都可以响应的时候,这个点击事件应该给谁呢?为了解决这一个问题,就有了事件分发机制。如下图,View是一层一层嵌套的,当手指点击 View

    2022-12-09 michael007js 64

  • 关于RxJava背压

    关于RxJava背压前言适用人群:了解RXJava1.0、RxJava2.0基本用法,了解RxJava的一些常用操作符的小伙伴讲些什么:了解背压是什么?了解阻塞形成的原因怎么去解决阻塞RxJava对背压的处理为什么讲:学习RxJava2.0用法,熟悉背压机制(我差点信了自己)能讲好吗:被闹,又不是开车,这我哪知道啊!好吧不扯了,开车吧,不不,是开始学习下背压什么是背压在RXJava2.0出来以后,

    2022-12-07 michael007js 641

  • 已经有 MESI 协议,为什么还需要 volatile 关键字?

    在上一篇文章里,我们聊到了 CPU 的缓存一致性问题,分为纵向的 Cache 与内存的一致性问题以及横向的多个核心 Cache 的一致性问题。我们也讨论了 MESI 协议通过写传播和事务串行化实现缓存一致性。不知道你是不是跟我一样,在学习 MESI 协议的时候,自然地产生了一个疑问:在不考虑写缓冲区和失效队列的影响下,在硬件层面已经实现了缓存一致性,那么在 Java 语言层面为什么还需要定义 vo

    2022-11-27 michael007js 137

上一页12下一页 转至第
首页
关于博主
我的博客
搜索