Okio 源码解析 从前面的 OkHttp 源码解析中我们可以知道,OkHttp 中的 I/O 都不是通过我们平时所使用的 IOStream 来实现,而是使用了 Okio 这个第三方库,那它与寻常的 IOStream 有…
标签:原理
【Android】Framework笔记——BufferQueue
之前的一篇文章 【Android】Framework笔记——View的绘制流程(二)中提到了 Surface 的创建过程中 createSurfaceLocked 方法创建 SurfaceControl 的过程中会在 S…
【Android】Framework笔记——View的绘制流程(二)
之前一篇文章讲到在 ViewRootImpl 的 setView 方法中调用 requestLayout 后经过一系列过程完成了整个 View 的测量布局及绘制流程。但是 draw 方法中的 canvas 又是怎么来的呢…
【Android】Framework笔记——屏幕刷新机制
Android 中实际上是采用了三个缓冲区用于显示的。那么为什么需要用到这么多的缓冲区呢?我们从单缓冲开始,思考每个阶段存在的问题。 单缓冲技术 我们先来谈谈单缓冲技术,单缓冲意味着屏幕上渲染的数据在一个缓冲区中绘制与显…
【Android】Framework笔记——重读Android消息机制
大家应该都知道,Android 的消息机制是基于 Handler 实现的。还记得一年前的自己就看了几篇博客,知道了 Handler、Looper、MessageQueue 就自以为自己知道了 Handler 的原理。但其…
【Android】Framework笔记——View的绘制流程(一)
我们都知道在 Activity 的启动过程,当 AMS 对启动 Activity 相关的信息进行校验确认无误后会调用 ActivityThread 中的 handleLaunchActivity 方法。 首先它会调用 p…
【Android】Framework笔记——setContentView流程
setContentView 首先先来到了 Activity::setContentView,它其实调用了 getWindow().setContentView, Window 在我们这里的实现类是 PhoneWindo…
【Android】多线程断点续传下载原理及实现
这段时间看了看工作室的工具库的下载组件,发现其存在一些问题: 下载核心逻辑有 bug,在暂停下载或下载失败等情况时有概率无法顺利完成下载。 虽然原来的设计是采用多线程断点续传的设计,但打了一下日志发现其实下载任务都是在同…
【Java】JDK8 HashMap 原理分析(上)——链表部分
之前学习容器的时候缺少了一些笔记,现在补一下笔记顺便重新理解一遍这些容器的源码。 HashMap 是我们在 Java 开发中经常接触到的容器,今天就让我们从它的源码入手来了解它的实现原理。本文为上部分,不包含其有关红黑树…
【Android】JVM 学习之类加载机制
JVM 与类加载 Java 语言中,类型的加载、连接和初始化都是在运行期进行的。这样会导致一些性能的开销,但同时使得 Java 成为了一种可以动态扩展的语言。比如编写一个面向接口的程序,可以到运行时再对其具体的实现类进行…