![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
my
文章平均质量分 80
pumpkin的玄学
路漫漫其修远兮,吾将上下而求索。
展开
-
Handler 同步屏障&异步消息
简单来说,同步屏障就是一套为了让特殊消息更快执行的一个机制。这里我们假设一个场景:我们向主线程发送了一个UI绘制操作Message,而此时消息队列中的消息非常多,那么这个Message的处理可能会得到延迟,绘制不及时造成界面卡顿。同步屏障机制的作用,是让这个绘制消息得以越过其他的消息,优先被执行。MessageQueue中的Message,有一个变量,他标志了这个Message是否是异步消息;标记为true称为异步消息,标记为false称为同步消息。同时还有另一个变量target。原创 2023-09-08 18:25:17 · 604 阅读 · 2 评论 -
android:构建一个可以传入任何参数的ViewModelProvider.Factory
构建一个可以穿入任何参数的ViewModelProvider.Factory原创 2023-07-24 00:05:57 · 953 阅读 · 2 评论 -
JAVA 如何合理且优雅的检测到对象被回收?
有时我们需要在对象被回收之后触发一些操作,但是如何合理的监控对象回收呢?原创 2023-06-24 22:22:48 · 945 阅读 · 2 评论 -
HashMap 1.8全流程分析,详解put、resize、遍历等相关函数。以及其内部的二进制原理
从常用属性->构造方法->添加->扩容->查询->删除->遍历的顺序进行`HashMap`源码阅读,涉及到一些二进制的用法以及意义也会进行说明。原创 2023-05-28 23:34:00 · 878 阅读 · 2 评论 -
归并排序介绍、详解、案例
如果慢指针一次走一步,快指针一次走两步,当快指针走到链表尾部时,慢指针只走到链表的中央,这样也就找到了链表后半部分的头节点。例如输入的是:[3 -> 5 -> 1 -> 4 -> 2 -> 6] 输出的则是:[1 -> 2 -> 3 -> 4 -> 5 -> 6]。归并排序也是基于分治法的排序算法,为了排序长度为n的数组,需要先排序长度为n/2的字数组,然后合并这两个排序字数组于是整个数组也就排序完毕。归并排序的主要思想是将链表分成两个子链表,在对两个子链表排序后再将它们合并成一个排序的链表。原创 2023-04-05 20:54:28 · 645 阅读 · 3 评论 -
快速排序介绍、详解、案例
如果每次选取的中间值都在排序数组的中间位置,则快速排序的时间复杂度为O(nlogn),但是如果每次选取的中间值都是排序数组的头部或者尾部,那么快速排序的时间复杂度为O(n^2)。思路:确保最小堆的容量为K,每次从数组中读取一个数字时都和堆顶的元素进行比较,如果比堆顶的元素大,则移除堆顶元素并且将该元素添加到最小堆之中。例如,数组[3,1,2,4,5,5,6]中第3大的数字是5。在长度为n的排序数组之中,第k大的值在数组中的位置为(n-k)。下面以数组【4,1,5,3,6,2,7,8】来进行解析。原创 2023-03-26 23:54:08 · 645 阅读 · 2 评论 -
计数排序介绍、详解、案例
排序是非常基础并且重要的算法,目前常见的排序算法有`插入排序`、`冒泡排序`、`堆排序`、`计数排序`、`归并排序`和`快速排序`等。原创 2023-02-12 22:11:31 · 551 阅读 · 2 评论 -
Fragment全文详解(由浅入深_源码分析)
相信android开发者们一定或多或少的用过Fragment,但是对于其更深层次的原理我猜可能大部分应该都没有了解过,今天这里就由浅入深,整体对Fragment做一个全面解析。原创 2023-01-01 21:38:07 · 2924 阅读 · 9 评论 -
前缀树介绍,定义,图文详解分析——Java/Kotlin双版本代码
前缀树,又称作字典树,用一个树状的数据结构储存字典中的所有单词。原创 2022-12-18 22:29:53 · 919 阅读 · 2 评论 -
数据结构堆介绍,图文详解分析——Java/Kotlin双版本代码
堆是一种特殊的树结构。根据根节点的值与子节点值的大小关系,堆又分为最大堆和最小堆。原创 2022-11-27 21:28:26 · 905 阅读 · 3 评论 -
二叉搜索树、红黑树详解、红黑树高的应用、TreeMap的应用(图文详解)-Kotlin版本代码
二叉搜索树、红黑树详解、红黑树高的应用、TreeMap的应用(图文详解)-Kotlin版本代码原创 2022-11-13 21:45:10 · 1297 阅读 · 1 评论 -
二叉树广度优先搜索、深度优先搜索(前序、中序、后序)遍历,动图详解-Java/Kotlin双版本代码
二叉树广度优先搜索、深度优先搜索(前序、中序、后序)遍历,动图详解-Java/Kotlin双版本代码原创 2022-10-23 22:52:18 · 2066 阅读 · 3 评论 -
Android:WebView使用常见问题汇总(持续更新)
从事Android以来,几乎离不开`WebView`的使用。但是使用`WebView`的过程中,总会出一些令人意想不到的问题,故打算写一篇文章专门用来记录开发过程中遇到的问题吧。如果大家有遇到什么奇怪的问题,欢迎补充完善。......原创 2022-08-28 20:59:11 · 1752 阅读 · 4 评论 -
Android 从我方界面启动三方界面,如何巧妙地检测三方页面的生命周期呢?
从我方界面启动三方界面,如何巧妙地检测三方页面的生命周期呢?原创 2022-07-31 16:10:49 · 608 阅读 · 3 评论 -
Android:多进程的开启方式、注意点以及如何解决。
线程是CPU调度的最小单元。而进程一般指一个执行单元,在PC和移动设备上指一个程序或者一个应用。一个进程可以包含多个线程,进程和线程是包含与被包含的关系。在很多中情况下我们需要开启多进程,最常见的比如某一个模块会占用很多的内存且比较独立,可以考虑放到单独的进程去处理。但是多进程不仅仅是简单指定一个进程名称就好了,下面会进行详细介绍。.........原创 2022-06-26 22:10:35 · 4087 阅读 · 3 评论 -
Android多个进程同时写同一个文件,会怎么样?
Android多个进程同时写同一个文件,会怎么样?今人不见古时月,今月曾经照古人原创 2022-06-19 21:28:58 · 2239 阅读 · 2 评论 -
Android:自定义布局多状态切换容器MultiStateView
1. 列举常用的状态:`加载中`、`网络错误`、`错误`、`空数据`、`正常内容`、`其他...` 2. 不同状态的view可以通过状态来获取、控制、显示 3. 不同的状态的view可以通过xml添加、也可以在程序中调用函数添加 4. 可以在状态切换之前/之后监听,并且拦截是否真正的进行状态切换 5. 其他优化,是否包含切换动画等等原创 2022-05-01 23:12:40 · 1966 阅读 · 1 评论 -
Android 利用ContentProvider初始化组件踩到的坑
总之一句话,不要滥用`ContentProvider`仅仅去做一个初始化。原创 2022-04-17 13:28:21 · 3061 阅读 · 1 评论 -
以横屏启动Activity,上一个Activity的生命周期重走了且跟随设置了横屏。WHY?
以横屏启动`Activity`,上一个`Activity`的生命周期竟然重走?为什么呢?原创 2022-04-16 16:32:19 · 2449 阅读 · 1 评论 -
利用LRU(Least Recently Used)封装内存缓存LruCache,Kotlin版本。
LRU(Least Recently Used),即最近最少使用,是一种常用的`页面置换算法`,当需要存入的内容大于临界值的时候,选择最近最少使用的进行淘汰。原创 2022-04-05 10:11:51 · 714 阅读 · 0 评论 -
Android窗口机制:九、总结。(源码版本SDK31)
Android 窗口机制 SDK31源码分析 总目录初识DecorView与SubDecor的创建加载Window与Window Manager的创建加载ViewRootImpl的创建以及视图真正加载ViewRootImpl的事件分发一定要在主线程才可以更新UI吗?为什么?Activity的Token和Dialog的关系Toast机制 - 封装可以在任何线程调用的toast总结到这里,本系列就完了,下面简单总结一下接下来回顾一下,窗口架构图,通过上面八篇文章,现在会看这个架构图原创 2022-04-03 21:57:34 · 2171 阅读 · 0 评论 -
Android窗口机制:八、Toast机制-(封装可以在任何线程使用的toast)。(源码版本SDK31)
Toast机制源码分析,源码版本SDK31.封装可以在任何线程调用的toast原创 2022-03-27 16:08:59 · 4492 阅读 · 0 评论 -
为什么在Kotlin中运行0xFFFFFFFF不是-1
噢,你这看起来简单但又不简单的16进制使用。原创 2022-03-23 20:40:10 · 3818 阅读 · 0 评论 -
Android窗口机制:七、Activity的Token和Dialog的关系。(源码版本SDK31)
1. token是什么?2. Dialog为什么一定需要Activity作为Context3. Dialog弹出后对于Activity生命周期有何影响4. 如何正确的设置到Dialog的宽高原创 2022-03-20 18:52:08 · 3527 阅读 · 2 评论 -
Android窗口机制:一、初始,熟悉Android窗口机制概况。(源码版本SDK31)
Android 窗口机制 SDK31源码分析 - 初识 - DecorView与SubDecor的创建加载 - Window与Window Manager的创建加载 - ViewRootImpl的创建以及视图真正加载 - ViewRootImpl的事件分发 - 一定要在主线程才可以更新UI吗?为什么? - Activity的Token和Dialog的关系 - Toast机制 - 总结原创 2022-02-13 21:07:56 · 2231 阅读 · 5 评论 -
Android窗口机制:六、一定要在主线程才可以更新UI吗?为什么?(源码版本SDK31)
Android 窗口机制 SDK31源码分析 总目录初识DecorView与SubDecor的创建加载Window与Window Manager的创建加载ViewRootImpl的创建以及视图真正加载ViewRootImpl的事件分发一定要在主线程才可以更新UI吗?为什么?Activity的Token和Dialog的关系Toast机制总结原创 2022-03-13 14:26:44 · 3840 阅读 · 2 评论 -
Android窗口机制:五、ViewRootImpl的事件分发。(源码版本SDK31)
事件是如何被接收的呢?原创 2022-03-06 17:42:05 · 2744 阅读 · 2 评论 -
Android窗口机制:四、ViewRootImpl的创建以及视图真正加载。(源码版本SDK31)
- 初识 - DecorView与SubDecor的创建加载 - Window与Window Manager的创建加载 - ViewRootImpl的创建以及视图真正加载 - ViewRootImpl的事件分发 - 一定要在主线程才可以更新UI吗?为什么? - Activity的Token和Dialog的关系 - Toast机制`requestLayout`方法和`invalidae`方法的核心区别是啥?原创 2022-02-27 14:32:53 · 4218 阅读 · 9 评论 -
Android窗口机制:三、Window与Window Manager的创建加载。(源码版本SDK31)
Android 窗口机制 SDK31源码分析 总目录初识DecorView与SubDecor的创建加载Window与Window Manager的创建加载ViewRootImpl的创建以及视图真正加载ViewRootImpl的事件分发一定要在主线程才可以更新UI吗?为什么?Activity的Token和Dialog的关系Toast机制总结handleLaunchActivity、handleStartActivity、handleResumeActivity流程详解原创 2022-02-20 16:20:22 · 2025 阅读 · 2 评论 -
Android窗口机制:二、DecorView与SubDecor的创建加载。(源码版本SDK31)
Android 窗口机制 SDK31源码分析 总目录初识DecorView与SubDecor的创建加载Window与Window Manager的创建加载ViewRootImpl的创建以及视图真正加载ViewRootImpl的事件分发一定要在主线程才可以更新UI吗?为什么?Activity的Token和Dialog的关系Toast机制总结原创 2022-02-16 21:21:53 · 1904 阅读 · 3 评论 -
Android 自定义验证码View,可控制输入数量,可定制化样式。高度可定制化。Kotlin版本
Android 自定义验证码View,可控制输入数量,可定制化样式。高度可定制化。Kotlin版本。原创 2022-01-23 11:29:01 · 2661 阅读 · 2 评论 -
终极解决方案:App被系统回收之后,再次打开Fragment产生覆盖的问题。附带原理解析。
fragment为什么会在activity被回收的时候保存呢?保存到哪里了呢?怎么恢复的呢?如何解决?原创 2022-01-19 18:48:50 · 3691 阅读 · 4 评论 -
OkHttp初探3:简单文件上传、表单文件一起上传、带进度条的文件上传、MediaType介绍。Kotlin版本
文件上传;表单文件一起上传;带进度条的文件上传;MediaType介绍。Kotlin版本原创 2022-01-09 15:51:58 · 4488 阅读 · 2 评论 -
OkHttp初探2:如何使用OkHttp进行下载封装?带进度条?Kotlin+Flow版本。
如何使用OkHttp进行下载封装?带进度条;提供多种封装方式;正常版本;Kotlin+Flow版本。原创 2022-01-02 19:20:51 · 3845 阅读 · 4 评论 -
Android 常见内存泄漏总结、避免踩坑、提供解决方案。
静态实例持有非静态内部类耗时任务相关的匿名内部类/非静态内部类Handle内存泄漏Context被长期持有View被静态修饰大对象/监听器释放资源对象注意关闭集合对象原创 2021-12-19 20:52:00 · 2329 阅读 · 2 评论 -
Android:屏幕显示适配实战 , 详解 PX DPI DP/DIP Density的区别。
Android不同机型屏幕适配实战。简单深入理解,附带源码。原创 2021-12-12 18:33:24 · 3999 阅读 · 4 评论 -
Android 仪器化单元测试(instrumented unit tests) Androidx kotlin版本
android仪器化单元测试全面详解,全新kotlin androidx版本。快速上手不迷路。原创 2021-12-10 16:26:28 · 2323 阅读 · 0 评论 -
Kotlin:深度理解协程挂起恢复实现原理。纯源码分析。
- 协程是依靠什么实现的呢?- 如何挂起?- 如何恢复?原创 2021-12-05 15:40:50 · 1375 阅读 · 3 评论 -
有没有办法让数组永不会出现越界呢?
一个不会产生数组溢出的数组使用扩容方案看源码里面存在这样的一个函数源码里面array的容量始终为2^nprivate fun Array<Any?>.getBufferAt(index: Long) = get(index.toInt() and (size - 1))private fun Array<Any?>.setBufferAt(index: Long, item: Any?) = set(index.toInt() and (size - 1), item)什原创 2021-11-28 21:39:36 · 459 阅读 · 1 评论 -
Kotlin:深入理解StateFlow与SharedFlow,StateFlow和LiveData使用差异区分,SharedFlow实现源码解析。
本文接上一篇博文:Kotlin:Flow 全面详细指南,附带源码解析。文章目录StateFlow、SharedFlowStateFlow使用StateFlow简介StateFlow的用法LiveData与StateFlow差异对比StateFlow特别说明Android中使用StateFlow实践SharedFlow使用SharedFlow简介SharedFlow的使用SharedFlow使用实战????♀️SharedFlow、StateFlow的使用区别,换句话说,事件和状态的区别?StateFlo原创 2021-11-28 18:09:22 · 6592 阅读 · 10 评论