EN

loading
Android Systrace 响应速度实战 3 :响应速度延伸知识

在讨论 Android 性能问题的时候,卡顿、响应速度、ANR 常被放在一起。它们可能有共同原因,也可能同时出现,但不是按严重程度划分的三个等级。用户说“卡”,还需要分清是动画不连贯、操作后等得太久,还是系统触发了无响应判定。

动画或列表滚动的不连贯通常称为 Jank;应用启动、亮灭屏或场景切换耗时过长属于 响应慢(slow response / high latency);ANR 则由具体的系统超时条件触发。掉帧率、启动耗时和 ANR 率各有测量口径,分析时要分开。

本文是响应速度系列的第三篇,主要是讲在使用 Systrace 分析应用响应速度问题的时候,其中的一些延伸知识,包括启动速度测试、Log 输出解读、Systrace 状态解读、三方启动库等内容

Android 开发者学习路线(2020 版本)

Medium 上 @MindOrks 发布了一篇 2020 年 Android 程序员的学习线路,鉴于一部分人无法阅读原文(你懂得原因),我把这篇文章的内容结合自己的 2020 年的学习计划,一起发出来,给大家一个参考

原文比较简单,并没有介绍为什么要推荐这些,只是单纯地列了一下知识点,我这边针对每个知识点做一些简单的介绍,有些知识点原文并没有提到,我会根据自己的理解加上,仅供参考

这篇文章主要针对 Android 开发者,如果你是新手,那么下面的内容可以帮助你找到学习的线路;如果你是老手,这篇文章列出的内容也可以帮助你查漏补缺。如果各位有什么其他的建议,欢迎留言交流

Java7 HashMap 源码分析

在没有排序或额外索引的数组、链表中,按值查找最坏需要遍历全部元素。哈希表(hash table)通过哈希值定位桶,在哈希分布良好时,基本查找可以接近常数时间;这不代表所有输入下都能保证 O(1)。

HashMap是基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。

本文按源码顺序看 HashMap:数组与链表的数据结构、构造函数、put 和扩容、get,最后是迭代器如何用 modCount 检查结构修改。末尾补充后续 JDK 的变化。

细说 Java 单例模式

单例模式也叫单子模式,是一种常用的软件设计模式。本文按饿汉式、双重检查锁、静态内部类和枚举的顺序,介绍各自的初始化方式及边界。

技术复核(2026-10-13):这些实现思路仍然适用。下文以 Java 5+ 的内存模型和 Java SE 25 规范核查,修正“类加载即创建”“private 只在编译期生效”“枚举因抽象而不能反射”等说法。各个名为 Singleton 的代码块是替代方案,不应同时放进同一个源文件。