
android
文章平均质量分 94
leobert_lan
TODO
展开
-
Java多线程系列-- Fork&Join框架,分治的艺术
今天,我们用1-3分钟的时间,回顾Java Fork&Join 框架知识。为相关知识画一个句号。。。原创 2023-02-27 21:45:19 · 914 阅读 · 0 评论 -
好玩系列:听说你的ImageSpan没能动起来?
迟来的续集–Drawable+Animator,将优雅进行到底, 并在其中留下一个思考题:"用 动画Drawable 是否可以让 ImageSpan 直接动起来"相信大家也进行了尝试,并且不出意外地出现了意外!即便使用可以动起来的Drawable构建ImageSpan,也没有让他动起来!今天我们将在一个愉快的氛围下,让ImageSpan动起来,并进行一些更深层次的探索,不出意外,这将是Drawable相关文章的终结篇。三思系列:重新认识Drawable三思系列:为什么要自定义View。原创 2023-02-06 20:56:50 · 573 阅读 · 2 评论 -
研究良久,终于发现了他代码写的快且bug少的原因
读者诸君,今日我们适当放松一下,不钻研枯燥的知识和源码,分享一套高效的摸鱼绝活。我有一位程序员朋友,当时在一个团队中开发Android应用,历经多次考核后发现...原创 2022-12-11 14:23:12 · 834 阅读 · 0 评论 -
迟来的续集--Drawable+Animator,将优雅进行到底
用心写文章,用脚起标题。这一篇,我们将从一个自定义动画Drawable开始,探索卡顿问题,彻底弄清Android中动画的原理,藉此实现更有趣的功能原创 2022-10-18 11:31:56 · 690 阅读 · 0 评论 -
Java多线程系列--掌握Future,轻松获取异步任务结果
连这些读不知道的话,面试肯定要挂了。 今天,我们一同回顾:多线程中并发和异步的基础中的基础,掌握了它们才有面试及格的可能。原创 2022-09-26 13:15:32 · 1464 阅读 · 0 评论 -
谈一谈在两个商业项目中使用MVI架构后的感悟
看懂这一篇文章,便能彻底吃透MVI。原创 2022-08-24 14:34:05 · 1748 阅读 · 4 评论 -
Java多线程基础--线程的创建与线程池管理
本篇我们将厘清Java线程的创建细节、彻底明白线程池的设计原理;在Android面试中游刃有余,和面试官友好的吹牛啤,并写出可靠的代码。原创 2022-05-16 15:39:08 · 359 阅读 · 0 评论 -
三思系列:前人用GreenDao留下的坑,全线被扣了绩效
前人挖坑,被扣绩效!快来看看你的项目有没有。您将从一个GreenDao使用的事故开始,掌握GreenDao的整体设计,最终解决问题并对APT、Gradle插件技术融会贯通。原创 2022-04-10 11:11:10 · 3339 阅读 · 0 评论 -
Java多线程基础--线程生命周期与线程协作详解
一张广为流传的Java线程生命周期图居然是错的!sleep和wait的区别弄清了吗?基础中的基础:线程生命周期与线程协作详解原创 2022-03-28 17:59:44 · 3039 阅读 · 0 评论 -
一份能帮助到你的2021年终总结
一份专门为读者写的年终总结,以自身年终总结为引子,重点分享了面试经历和个人总结,对职业生涯的阶段性总结,相信读完之后一定会有很多收获。原创 2022-01-31 12:11:49 · 576 阅读 · 4 评论 -
孔乙己:你可知道页面和弹窗“通信“的方式有四种?
这日孔乙己照常走进星巴克,点了份大杯脱脂奶拿铁,顺带给小伙科普了下,页面和弹窗“通信“的方式有四种...原创 2021-12-21 22:44:59 · 252 阅读 · 0 评论 -
开源一个优雅的类图生成工具
前言首先必须声明,这不是一篇广告或者标题党。 而是我开源了一个工具,可以优雅的为Java or Kotlin 项目生成 Class Diagram。我推测列为读者会进来阅读,原因无非以下两点:获得一个生成类图的工具,并通过文章快速了解是否 方便 且 好用了解一下我是如何折腾的仅关心如何使用的,可以移步 使用示例我们将按照下面的脑图顺时针展开,揭开这一工具的诞生过程主要问题与方案背景背景:笔者今年换了份工作,所在的公司属于 医疗器械 下的细分领域,而相比于 纯互联网行业 领域,医疗器原创 2021-10-31 22:27:58 · 4544 阅读 · 4 评论 -
Jetpack Compose | Compose 滑动列表真的需要使用LazyColumn吗?No No No!
Jetpack Compose | 控件篇(五)-- Spacer、LazyRow、LazyColumn & 让Column可滑动在上一篇中,我们完成了 Box、Row、Column 相关内容的学习,并且留下了一个疑问:“如果容器大小不足以承载内容,怎么处理呢?”,这一篇我们一起学习这部分内容。文中代码均基于 1.0.1版本如无特殊说明,文中的 Compose 均指代 Jetpack compose文中代码均可在 WorkShop 中获取,本篇代码集中于 post29 & post原创 2021-09-07 21:49:20 · 4240 阅读 · 2 评论 -
Jetpack Compose | 控件篇(四)-- Box、Row、Column
在上一篇中,我们完成了 Switch、CheckBox、RadioButton 相关内容的学习,至此,最基本的简单控件我们已经学完,接下来我们将学习 基本的布局。以Android 为例,我们已经完成了:TextView、Edittext、Button、ImageView、CheckBox、SwitchButton、RadioButton 等内容的学习。接下来将开始学习布局规则,例如:FrameLayout、LinearLayout、RelativeLayout、ConstraintLayout 等原创 2021-09-01 23:33:26 · 1859 阅读 · 0 评论 -
Jetpack Compose | 控件篇(三) -- Switch、CheckBox、RadioButton
写在最前在之前的文章中,我们学习过Compose 中的 ImageButton。本篇我们将继续学习 Switch 、 CheckBox 、RadioButton , 这三个控件在 人机交互界面 中也是由来已久。文中代码均基于 1.0.1版本如无特殊说明,文中的 Compose 均指代 Jetpack compose文中代码均可在 WorkShop 中获取,本篇代码集中于 post28 包下完整系列目录: Github Pages | 掘金 | csdnSwitch当功能含义如同 开关 一原创 2021-08-29 13:48:05 · 1262 阅读 · 0 评论 -
Jetpack Compose | 控件篇(二) -- Icon,Image
highlight: darcula写在最前在上一篇,我们学习了Compose 中的 Text 、TextField 、Button,并在WorkShop中进行了一系列尝试。除了对他们的效果有了直观的认识外,也感受了Compose的编码乐趣。本篇我们将继续学习Icon和Image,从命名上我们可以看出他们和 图形、图片 有关,也是 内容呈现 中非常重要的一种载体和方式。文中代码均基于 1.0.1版本如无特殊说明,文中的 Compose 均指代 Jetpack compose文中代码均可在 .原创 2021-08-24 10:34:43 · 1323 阅读 · 0 评论 -
Compose | 控件篇(一) -- Text、TextField、Button
这一篇,我们一起学习 Jetpack Compose 中的部分控件 – Text、TextField、Button,掌握其使用方式和特性。文中代码均基于 1.0.1版本如无特殊说明,下文中的 Compose 均指代 Jetpack compose小互动上一篇文章:Compose | 一文理解神奇的Modifier 在郭婶的号上有读者评论到不知道Compose从何学起,无从下手,这里简单的谈一谈我的看法:Compose 以及 Jetpack Compose 对于Android从业人员而言确实是原创 2021-08-19 13:11:10 · 1385 阅读 · 1 评论 -
Compose | 一文理解神奇的Modifier
写在最前Jetpack Compose的预览版出来已经有很长时间了,相信很多读者都进行了一番尝试。注意:下文如无特殊说明,Compose均指代Jetpack Compose可以说,Compose在声明布局时,其风格和React的JSX、Flutter 等非常的相似。而且有一个高频出现的内容: Modifier,即 修饰器,顾名思义,它是一种修饰器, 在Compose的设计中,和UI相关的内容都涉及到它,例如:尺寸,形状 等这一篇文章,我们一起学习两部分内容:Modifier的源码和设计SDK中原创 2021-08-09 17:25:36 · 787 阅读 · 1 评论 -
掌握Gradle,还需要掌握这些知识--Groovy MOP
Groovy:MOP一文打尽写在最前Groovy已经不再是一门新出现的语言,而笔者是在2013年左右接触到它的,并且在2017年时,有机会尝试使用它编写了基于SpringBoot的后端项目。但说来惭愧,在很长的一段时间里,我都没有系统的学习它。并且时至今日,我也 不推荐 大家再去 系统的学习 它,毕竟 使用它的机会越发地少了,但是我依旧认为大家有必要花费一些零碎的时间,快餐式的了解它。这一篇讲MOP,之后还有一篇闭包文章代码已发布于:GroovyWorkshop为何产生编写Groovy系列的想原创 2021-07-01 22:32:52 · 264 阅读 · 0 评论 -
拥抱Kotlin Symbol Processing(KSP),手把手带你实现Kotlin的专有注解处理
好玩系列 | 拥抱Kotlin Symbol Processing(KSP),项目实战写在最前这一篇,我们抱着拥抱新事物的心态,尝试一些新事物。笔者在这一次历程中,对三项事物进行了尝鲜:手动迁移一个小规模的Gradle项目,由 Groovy Script 转为 Kotlin ScriptKotlin Symbol ProcessingKotlin Poet这次的 重点是KSP ,Kotlin Poet学习成本比较低,迁移 Kotlin Script 仅仅是比较繁琐。既然要实战,那么就需要一原创 2021-06-22 22:02:49 · 2446 阅读 · 3 评论 -
脑洞大开,Gradle项目管理依赖的船新版本
Gradle依赖管理最佳实践写在最前笔者最近接受了 躺平(不是等死),换了一份新工作。这部分内容,也是从前东家的 实际情况 出发的,可惜无法亲手去推广落地了。在前段时间,我发布过一篇拙见:三思系列:组件化场景下module依赖优雅实践方案,该文在组件化背景下,探索了一种方案,可以同时满足 减少编译数量以减少编译时间、便捷的修改依赖树以灵活改动任意层级的Module内容。具体内容可以阅读前文,不再赘述除却Module依赖,还有 库包依赖 ,本文着重于探索 库包依赖项 的管理方式,而且是狭义上的原创 2021-06-10 09:14:50 · 294 阅读 · 1 评论 -
三思系列:Glide 4.X加载过程一文掌握 | Glide(二)
上一篇中,我们通过阅读Glide初始化的主要代码,对Glide中的模块进行了职责梳理。这一篇,我们在前文的基础上,对Glide的 资源加载过程 进行梳理。当然,通过博文来看 大篇幅 的代码是相当 枯燥乏味 的,为了让阅读体验更佳,本文中会直接用 UML图 代替绝大多数的 代码拷贝。注:本文基于Glide 4.12.0。另:我的UML功底不太牢,文中涉及的UML图未必是最恰当的,如图类型或者标识错用,如果读者对此有所建树,我真诚的希望你可以在留言区留下宝贵的参考意见。再次介绍下三思系列:三思系列是我原创 2021-04-02 14:21:03 · 333 阅读 · 0 评论 -
三思系列:Glide 4.X全方位认知 -- 模块职责概览 | Glide(一)
最近在解决一些问题时,进行了一下检索,发现 绝大多数文章 是 基于3.X。Glide从进入4.X也有两三年了,在3.X的基础上,发生了很多变化。 所幸我对 4.X的源码还比较熟,且Glide的设计也很精彩,索性写一写 对4.X的剖析。当然,对于多数读者而言,因为有一定的基础知识,这些剖析文章并不是满地金砖了,可以泛读查漏。三思系列是我最新的学习、总结形式,着重于:问题分析、技术积累、视野拓展,了解更多本文主旨Glide是一个 庞大 的项目,这一篇旨在对Glide项目4.X版本进行 全方位的认知原创 2021-03-28 21:18:39 · 388 阅读 · 0 评论 -
温故:队列 | 数据结构 | 顺手刷算法
本文将对 数据结构 - 队列 进行温故、总结要点、算法题练手,以期获新知。读者可以借本文反视对队列知识的掌握程度,或者在本文基础上,收集资料加深学习。温故系列是我尝试的一种新学习总结方式,在 阅历增长时,总结旧闻,以 期获 新知,并不断迭代。了解更多本次温故时间:2021年3月队列,和 栈 类似,也是一种 线性存储结构 ,不同的是,队列的数据项存取方式,队列是两端 开口 的,从数据从一端进入,从另一端取出。进入的一端被称为 队尾,取出的一端被称为 队头,存入数据的行为称为 入队,取出数据原创 2021-03-28 21:15:57 · 189 阅读 · 0 评论 -
好玩系列:让项目中的相册支持Heif格式图片
前言目前市面上的成熟的APP,其用户体系中均存在 设置头像 的功能,考虑到尺寸规范问题,一般会加入 图片裁剪 功能;考虑到页面UI统一度问题,甚至会在应用内实现 相册功能。据此推断:各位的项目中,会遇到 Heif格式图片 需要兼容的需求。笔者目前参与的商业项目,也被市场要求对Heif图片进行适配。这篇文章,记录了我在这件事情上 折腾 的过程。好玩系列是我进行 新事物实践 、 尝试创造 的记录,了解更多背景HEIF格式的全名为 High Efficiency Image File Format原创 2021-03-25 11:51:06 · 1057 阅读 · 0 评论 -
温故:栈|数据结构
对数据结构-栈进行温故,以期获新知温故系列是我尝试的一种新学习总结方式,在 阅历增长时,总结旧闻,以 期获 新知,并不断迭代。了解更多本次温故时间:2021年3月基本概念目的:存储逻辑关系为 一对一 的数据特性:出口和入口一致,后进先出、先进后出,先行存储结构定义:栈是一种只能从表的一端存取数据且遵循 “先进后出” 原则的 线性存储结构。操作:向栈中添加数据,即 进栈 、 入栈 、 压栈, 从栈顶进从栈中取出数据,即 出栈,从栈顶出线性存储结构线性结构是一种 有序数据项 的原创 2021-03-21 11:35:37 · 139 阅读 · 0 评论 -
温故:线性表|数据结构
对 数据结构 - 线性表 进行温故,以期获新知温故系列是我尝试的一种新学习总结方式,在 阅历增长时,总结旧闻,以 期获 新知,并不断迭代。了解更多本次温故时间:2021年3月注:部分图片来自网络检索,未找到出处,内容仅供学习,如有侵权,可留言联系 要求删除 或者 要求指明出处基本概念线性表 ,全名为 线性存储结构,是一种 有序数据项 的 集合,其中每个数据项都有 唯一 的 前驱 和 后继,注意:第一个没有前驱,最后一个没有后继。新数据项加入到数据集中时,只会加入到原有某个数据项 之前原创 2021-03-21 11:26:56 · 204 阅读 · 0 评论 -
三思系列:Android的消息机制,一文吃透
三思系列是我最新的学习、总结形式,着重于:问题分析、技术积累、视野拓展,关于三思系列这次,真的可以一文吃透:Java层消息队列的设计Java层Looper分发Native层消息队列和Java层消息队列的关系Native层Looper分发消息epoll前言作为Android中 至关重要 的机制之一,十多年来,分析它的文章不断,大量的内容已经被挖掘过了。所以:已经对这一机制比较 熟稔 的读者,在这篇文章中,看不到 新东西 了。还不太熟悉消息机制的读者,可以在文章的基础上,继续挖一.原创 2021-03-14 16:36:11 · 385 阅读 · 0 评论 -
三思系列:“声明式UI“和“命令式UI“,你的理解可能是错的
三思系列是我最新的学习、总结形式,着重于:问题分析、技术积累、视野拓展,关于三思系列前言最近,Jetpack Compose 发布了 Beta 版本,可以说是千呼万唤始出来。在一个 现象级事物 出现时,关于它的讨论会很热。我注意到,最近有一大批关于Compose的文章涌现了出来,并且有很多的讨论,这很棒。但是,值得一提的是,我发现很多人对于 声明式UI 、 命令式UI 的认知,可能出现了一点偏差。当然,我也 不是 像 马丁老爷子 或者 Jack Wharton 那样的 专家,对于这个问题,只能.原创 2021-03-06 13:11:44 · 3387 阅读 · 7 评论 -
三思系列:为什么要自定义View
前言或许你掌握了 measure的细节 ,layout机制 ,事件传递机制 ,canvas各种API ,但是,你们想过这个问题吗?这一篇,不仅仅是对一个面试必会题的解析,更是透过这个问题的思考,寻找 最佳实践 ,拓展思维角度 , 少走弯路三思系列是我最新的学习、总结形式,着重于:问题分析、技术积累、视野拓展,关于三思系列关于View系列View系列旨在通过 对现实问题 的思考,建立完善的 View体系认知,极力建议读者了解一下 我为什么撰写、分享这个系列先给出思考这个问题的 脑图 ,原创 2021-02-28 16:14:18 · 243 阅读 · 0 评论 -
三思系列:View体系认知(一),内容是如何正确被展现出来的--视觉呈现概览
前言这是View体系认知子系列的第一篇,这一篇会探知Android中,是通过怎么的设计让视图正确呈现在屏幕上的。关于三思系列关于View系列极力建议读者了解一下 为什么撰写这个系列考虑到博客不适合做大量的代码展现,我会以 WorkShop 的形式展现这些代码。链接我们知道,在GUI编程中,必然存在一套试图体系内容,Android中也有一套,抛开掉底层内容,和Compose中的内容, 我们这一篇,一同探究下 Framework中,View体系 如何做视觉呈现。如何描述一个任意的界面假如我原创 2021-02-21 16:29:42 · 395 阅读 · 0 评论 -
好玩系列:拥有它,XML文件少一半--更方便的处理View背景
好玩系列:拥有它,XML文件少一半–更方便的处理View背景前言关于好玩系列这是一项已经被我们项目实验性投产将近一年的方案,虽然还处于实验性阶段,但稳定性和实用性都不错。DaVinCi 仓库链接问题背景:Android 中普遍使用XML来定义资源,对于视图的背景样式而言,需要定义大量的GradientDrawable、StateListDrawable 资源等。当项目体量很大时。这些资源就会出现难管理的问题。诚然,从最佳实践角度出发,对项目中的资源进行合理地命名以满足查询索引规则,按照设计原创 2021-02-11 20:39:03 · 253 阅读 · 0 评论 -
三思系列:组件化场景下module依赖优雅实践方案
三思系列:组件化场景下module依赖优雅实践方案前言关于三思系列背景:如果没有记错,15年那会Android项目逐步转向使用Gradle构建,时至今日,组件化已经不再是一个新颖的话题。虽然我将这篇文章放在了Gradle分类中,但是我们知道,使用gradle构建的后端项目,热点聚焦在:实现微服务化,项目是拆开的,决定了依赖库已经是静态jar包,和我们要讨论的场景是不一致的。所以我们还是在Android领域中讨论这个问题.在各种方案的组件化实施中,一定会将部分功能模块拆分,进行library原创 2021-02-05 12:24:59 · 826 阅读 · 4 评论 -
三思系列:重新认识Drawable
前言关于三思系列前一段时间,在某公众号看到了一篇关于splash页面动效的文章,具体为:将一个英文单词拆分为多个字母,散落在屏幕中,然后按照一定的路径回归,最终展示一段流光效果,完成splash页面。当时文章中提到的做法是自定义View的实现。当时脑海中灵光一闪,感觉还是用Drawable来干这个事情更加合适。记忆中,我曾经整理过一篇Drawable基础内容的文章,可惜丢失了,在开始干这件事情之前,我们把这一块内容再完整的梳理一遍。这篇文章会比较长,先给出导图Drawable的设计意图A原创 2021-02-01 19:55:38 · 336 阅读 · 1 评论 -
代码实战:APP用户数据分析 - 全链路用户路径分析 (下)
前言书接上文:https://blog.youkuaiyun.com/a774057695/article/details/106843586上一篇博客中,我们介绍了用户路径分析的价值以及从客户端出发的一套“用户路径采集”解决方案的探索和论证。在上一篇中,我们提到会再开一到两篇博客来介绍:从客户端出发,如何做好“模块分析法、潜在用户需求路径分析法”;以及在客户端运用一定的算力做模型分析。经过谨慎的思考后,在客户端运用算力处理模型分析这一部分搁置了,首先这一行为不具有普适性,而且强行写下去也只是去扯在移动端领原创 2020-07-12 15:47:56 · 1336 阅读 · 0 评论 -
代码实战:APP用户数据分析 - 全链路用户路径分析 (上)
其实这个题目让我想了很久,很担心让大家认为这是一篇讲用户运营或者产品方法论的文章。不过开头还是要简单介绍一下这块内容,可以理解做用户行为埋点和页面路径埋点的意义所在。本文涉及到的代码仓库:https://github.com/leobert-lan/PagerTrackerDemo需要做一定的脱敏工作,可能博客发布时,仓库中还缺乏真正的Demo????,但链路埋点的library已经完成脱敏工作。全链路用户路径分析在不同类型的APP中,产品经理(或者运营、数据分析师)可能会使用漏斗转化法原创 2020-06-26 23:44:20 · 2944 阅读 · 0 评论 -
看完这一篇,让机器帮你写开发文档
通过这一篇博客,可能会加深对AnnotationProcessor、SPI机制等的理解,可能会诱发你对已有的知识产生天马行空的使用想法背景你是否在工作中遇到这样的场景:“XX,你还记得我们项目里面有写过助手类,能把字符串格式化成这个样子吗。然后XX一脸懵逼”,你又是否听过这样的吐槽:“什么low biiii中台,写个功能库连个像样的文档都写不出来,难道让我去看他底裤(代码)??”我们总说优秀的代码不需要文档,看到就明白他的意思。快别搞笑了,不是每个人都敢把底裤漏给别人看的,毕竟程序员之间相互尊重原创 2020-06-11 09:31:07 · 573 阅读 · 0 评论 -
看完这一篇,ViewPager2基本可以投产了
前言ViewPager2已经出来很长一段时间了,但之前一直都是alpha版本,几次版本迭代中,内容细节变化也挺多,前阵子第一个正式版发布,不巧NCP爆发,在家里索性把之前的预研Demo整理整理,梳理下内容点写一篇博客,也算把预研工作正式收个尾。首先先感谢一个我确实记不得的大兄嘚,预研的demo的前身,来自于GitHub,是我很久之前看alpha版本的使用时下载的,只下了一个zip,着实找不...原创 2020-03-31 18:30:08 · 6396 阅读 · 5 评论 -
回归本源,仔细聊一聊DI(依赖注入)、IoC、DIP和相关内容
前言:已经很久没有在优快云写过文章了,现在打算回到最开始的地方,整理这些年的工作所得,并勇敢的迈出学习成长最勇敢的一步:在分享自我中勇于暴露自己的错误,被指出然后在讨论中获得进步。所有接下来写的博客,都是一些较大的话题,浅显的、深入的方面都会涉及。概念篇:什么是DI,什么是IoC先来谈一谈什么是IoC:控制反转(Inversion of Control,缩写为IoC),是面向对...原创 2019-08-04 15:43:07 · 619 阅读 · 0 评论 -
Android JobSchedule漫说
Android O,你不得不用的JobSchedule原创 2017-10-02 19:43:40 · 1726 阅读 · 0 评论