android面试
文章平均质量分 93
爱海贼的小码农
做任何事,不要急躁,要慢慢沉淀自己。
展开
-
Android消息机制分析
Android消息机制分析 Android的消息机制主要是指Handler的运行机制以及Handler所附带的MessageQueue和Looper的工作过程。这三者实际上是一个整体,只不过 我们在开发过程中比较多地接触到Handler而已。Handler的主要作用是将一个任务切换到某个指定的线程中去执行,那么Android为什么要提供这个功能呢? 或者说Android为什么需要提供在某个具体的线程中执行任务这种功能呢?这是因为Android规定访问UI只能在主线程中进行,如果在子线程中访问UI,那么程序就原创 2022-04-25 18:01:16 · 568 阅读 · 1 评论 -
Android屏幕刷新机制
Android屏幕刷新机制 一些前置概念 屏幕刷新率 一秒内屏幕刷新的次数(一秒内显示了多少帧的图像),单位 Hz(赫兹),如常见的 60 Hz,90Hz,120Hz(高刷新率)。刷新频率取决于硬件的固定参数(不会变的)。 逐行扫描 显示器并不是一次性将画面显示到屏幕上,而是从左到右边,从上到下逐行扫描,顺序显示整屏的一个个像素点,不过这一过程快到人眼无法察觉到变化。以 60 Hz 刷新率的屏幕为例,这一过程即 1000 / 60 ≈ 16ms。 帧率 (Frame Rate) 表示 GPU 在原创 2022-04-07 13:11:26 · 1337 阅读 · 0 评论 -
LeakCanary源码分析
LeakCanary源码解析 内存泄露 今天来讲解一下老生常谈的问题了,内存泄露以及讲解LeakCanary是如果检测内存泄露的。 大家都在讲内存泄露,那么内存泄露的最根本的原因是什么?**最根本的原因就是该回收的对象没有被即使回收掉,导致了内存泄露。**要理解这句话,就要对java的垃圾回收机制有一定的了解了。什么是垃圾回收呢?就是java虚拟机在运行的时候会触发垃圾回收的机制,将那些没有用的,占用内存的对象回收掉。java虚拟机是怎么判断这个对象有没有用呢?是根据GC ROOT的可达性算法去判断的。就是原创 2022-03-23 18:17:43 · 2754 阅读 · 0 评论 -
Glide的缓存源码分析
Glide的缓存流程 上一篇讲解了Glide的整体流程,其实很多时候,只有第一次加载图片的时候,我们才会按照那一个流程去走。因为很多时候,我们都是有缓存了。有了缓存之后,加载流程就会稍微变一下了。那么今天,我们就来讲解一下Glide中的缓存。在讲解Glide缓存之后,我建议大家先去了解一下LinkedHashMap的实现。因为这里涉及到LRU算法。推荐大家一篇关于LinkedHashMap的博客:田小波关于LinkedHashMap的源码分析 先来一张Glide缓存的流程图吧,让大家对Glide的流程有一个原创 2022-03-22 14:21:31 · 2318 阅读 · 0 评论 -
Glide源码分析之Glide的整体加载流程
大家应该都听说过Glide图片加载库,或多或少都知道怎么去使用Glide去加载一张图片。Glide对于使用者来说是非常友好的一个库。那么今天我们就来学习Glide的源码,网上也有很有优秀的博客讲解Glide的源码的,现在我们一起来学习Glide的源码。这个优秀的框架是怎么帮助我们实现图片的加载和显示的。很多人看源码都不知道从哪里下手。这篇博客也分享一下我平时是怎么看源码的。这是基于Glide:4.10版本的源码分析 首先我们平时是怎么使用Glide的? Glide.with(context).loa原创 2022-03-15 17:33:13 · 902 阅读 · 0 评论 -
java中的垃圾回收算法
java中的垃圾回收算法 今天来讲讲java中的垃圾回收机制,要了解垃圾回收机制,我们就要先了解java堆,它的实现是什么。 java堆的实现: 在java中堆的实现像一个传送带,每分配一个新的对象,它就向前移动一格。这就意味着对象存储空间的分配非常的快,java的“堆指针”只是简单的移动到尚未分配的区域。 但是java堆未必完全像上面将的那样工作,因为如果真的是那样的话,一定会导致频繁的内存页面调度——将其移进移出硬盘,页面调度会影响性能,最终在创建足够多的对象之后,内存耗尽。因为java中有原创 2022-02-14 16:10:47 · 5301 阅读 · 0 评论 -
面试必备之TCP协议详解
面试必备之TCP协议 TCP协议无论是前端还是后端面试,都会被经常问到,而且在我们日常的开发中,这里面的一些知识对我们了解网络也有重要的意义。所以非常有必要去详细了解一下TCP协议。 什么是TCP TCP是主要的网络协议之一,属于传输层的协议。它使两台主机能够建立连接并交换数据流。TCP 能保证数据的交付,维持数据包的发送顺序。 TCP的特点: TCP是面向连接的传输层的协议。就是使用TCP协议之前,必须建立连接。在数据传输完成之后,必须释放已经建立的TCP连接。 每一条TCP连接只能有两个端点原创 2022-02-10 09:48:32 · 2158 阅读 · 0 评论 -
从源码角度去理解Context
Android中的各种Context Context家族之间的关系 看以上这幅图,我们知道各个Context之间的关系。 首先Context是一个抽象类,它的实现由两个一个是ContextImpl,它是真是实现了Context里面的各种方法。ContextWrapper里面持有一个ContextImpl变量——mBase,调用ContextWrapper的实现方法,最终都是通过mBase去调用ContextImpl的实现方法。这里用的设计模式是装饰模式,ContextWrapper是装饰类。Conte原创 2022-01-19 14:30:30 · 395 阅读 · 0 评论 -
Android面试之Activity的启动流程详解
根Activity的启动过程 根Activity的启动整体过程如下: 主要分为四部分 Launcher请求ATMS创建根Activity ATMS会去请求zygote创建应用程序进程 zygote去创建应用程序进程 ATMS请求ApplicationThread创建根Activity 我们分析的话,不会按照上面的每一个步骤去分析。我们会按照下面三个部分去进行源码(android 10)的分析 Launcher请求ATMS的过程 ATMS到ApplicationThread的调用过程 Activity原创 2022-01-13 18:51:57 · 2346 阅读 · 0 评论