
源码解析
文章平均质量分 86
从源码的角度分析功能实现和在日常开发中怎么运用这块原理
沙滩捡贝壳的小孩
所有努力都会一点一点汇聚,最终实现一点突破
展开
-
Android 基本属性绘制文本对象FontMetrics
4. Leading文档说的很含糊,其实是上一行字符的descent到下一行的ascent之间的距离。6. 同上,bottom指的是最下字符到baseline的值,即descent的最大值。5. Top指的是指的是最高字符到baseline的值,即ascent的最大值。3. Descent是baseline之下至字符最低处的距离。2. Ascent是baseline之上至字符最高处的距离。1. 基准点是baseline。原创 2023-11-12 23:59:56 · 551 阅读 · 0 评论 -
android 卡顿、ANR优化(1)屏幕刷新机制
本文通过阅读各种文章和源码总结出来的,如有不对,还望指出目录正文基础概念视觉暂留逐行扫描帧帧率、刷新率、画面撕裂画面撕裂Android屏幕刷新机制的演变单缓存(Android4.0之前)双缓存VSync(垂直同步)三缓存源码解析。原创 2023-03-08 21:10:51 · 902 阅读 · 0 评论 -
Android 事件分发机制(4)-常见面试题
事件分发机制主要涉及3个方法,3个对象,3个事件3个方法分别是dispatchTouchEvent 返回类型是布尔类型的,表示事件是否分发,如果为false的话,则返回上一层onInterTouchEvent 返回类型是布尔类型的,在dispatchTouchEvent内部调用,ViewGroup中调用的,表示事件是否拦截,如果拦截的话,会在ViewGroup中消费事件,执行ViewGroup的onTouchEvent方法,否则会继续分发给View。原创 2023-02-21 14:58:18 · 2593 阅读 · 1 评论 -
handler解析(4)-Message及Message回收机制
Handler消息机制中Message及Message回收机制详解原创 2023-02-16 15:49:44 · 672 阅读 · 0 评论 -
handler解析(3)-同步消息、异步消息、同步屏障
Message分为3种:普通消息(同步消息)、屏障消息(同步屏障)和异步消息。我们通常使用的都是普通消息,而屏障消息就是在消息队列中插入一个屏障,在屏障之后的所有普通消息都会被挡着,不能被处理。不过异步消息却例外,屏障不会挡住异步消息,因此可以这样认为:屏障消息就是为了确保异步消息的优先级,设置了屏障后,只能处理其后的异步消息,同步消息会被挡住,除非撤销屏障。也就是我一般使用的Message,再通过Handler进行到消息队列,前提是构造Handler时候传的构造参数async为false。原创 2023-02-12 23:37:05 · 2160 阅读 · 0 评论 -
handler解析(2) -Handler源码解析
1.一个线程中只能有一个looper,这块是由ThreadLocal决定的,因为ThreadLocal中包含了一个ThreadLocalMap,在调用looper.prepare时将looper对象set进去ThreadLocal中2.UI线程,就是主线程是不需要在调用looper.prepare跟looper.loop()的,因为这2个在ActivityThread中的main方法中已经调用过了,其中looper.prepare调用的为looper.prepareMainLooper()原创 2023-02-11 17:08:41 · 691 阅读 · 0 评论 -
Android事件分发机制(3)-处理滑动冲突
阅读本篇文章之前,建议先阅读Android 事件分发机制(1)-源码分析_z936689039的博客-优快云博客1.案例1原创 2021-11-28 22:58:57 · 239 阅读 · 0 评论 -
Android事件分发机制(2)-setOnCLickLinstener 执行流程
阅读之前建议先看从源码分析Android 事件分发机制_z936689039的博客-优快云博客,可以更方便的理解里面奥妙setOnCLickLinstener,只要写过 Android 的同学应该都见过,大家都知道是点击事件监听,但是是怎么实现的呢?对,你没有猜错,就是回调你在 onClick(View view)中写的方法,就是一个回调方法,然后通过这个方法实现了点击监听,那么问题来了,这个方法它没有在activity或者fragment里头出现,那它是怎么实现的呢,下面直接从源码的角度看这玩意咋原创 2021-11-28 14:31:53 · 2430 阅读 · 0 评论 -
Android 事件分发机制(1)-源码分析
1.准备知识要弄明白事件分发,首先得知道这么几个知识点,1.1 activity,window,DetorView,ViewGroup这几个之间的关系大概关系如图:其中DecorView本身是继承至FrameLayout的,如图:它本来就是一个ViewGroup来的,window本身是一个抽象类,PhoneWinodw是唯一实现类,如图:1.2事件分发的对象是谁分发对象是MotionEvent,它是当用户点击屏幕里View或者ViewGroup的时候,将会产生..原创 2020-05-22 01:15:35 · 569 阅读 · 0 评论 -
LruCache
LruCache这个类是通过Glide得知的,不过它是自己又基于LRU算法自己写了个LruCache工具类,不过基本原理类似,都是基于LRU算法实现的1.来源一般来说,缓存策略主要包含缓存的添加、获取和删除这三类操作。如何添加和获取缓存这个比较好理解,那么为什么还要删除缓存呢?这是因为不管是内存缓存还是硬盘缓存,它们的缓存大小都是有限的。当缓存满了之后,再想其添加缓存,这个时候就需要删除一些旧的缓存并添加新的缓存。因此LRU(Least Recently Used)缓存算法便应运而生,LRU是最原创 2021-11-24 00:30:57 · 676 阅读 · 0 评论