更新: MkDocs知识库同步
- 女童生长激素项目文档更新 - 新增Android ANR知识点总结 - 任务执行: DevOps工程师 - 指令来源: CEO张伟明 → 任总 - 时间: 2026-03-31 00:15
This commit is contained in:
163
.obsidian/workspace.json
vendored
163
.obsidian/workspace.json
vendored
@@ -1,101 +1,59 @@
|
|||||||
{
|
{
|
||||||
"main": {
|
"main": {
|
||||||
"id": "011c443bd31fa19e",
|
"id": "4a0abd11ab571e56",
|
||||||
"type": "split",
|
"type": "split",
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "6f5c5cdf13008dbc",
|
"id": "fd78b55dba3842ff",
|
||||||
"type": "tabs",
|
"type": "tabs",
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "9a5781991bf94030",
|
"id": "ee62f962fb280c83",
|
||||||
"type": "leaf",
|
|
||||||
"state": {
|
|
||||||
"type": "bases",
|
|
||||||
"state": {
|
|
||||||
"file": "未命名 1.base",
|
|
||||||
"viewName": "表格"
|
|
||||||
},
|
|
||||||
"icon": "lucide-table",
|
|
||||||
"title": "未命名 1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "25c9f7051aac05b3",
|
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "markdown",
|
"type": "markdown",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "docs/Obsidian笔记体系/Daily/2026-01-13.md",
|
"file": "docs/学习笔记/Android ANR 知识点总结.md",
|
||||||
"mode": "source",
|
"mode": "source",
|
||||||
"source": false
|
"source": false
|
||||||
},
|
},
|
||||||
"icon": "lucide-file",
|
"icon": "lucide-file",
|
||||||
"title": "2026-01-13"
|
"title": "Android ANR 知识点总结"
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "59894255df52f532",
|
|
||||||
"type": "leaf",
|
|
||||||
"state": {
|
|
||||||
"type": "markdown",
|
|
||||||
"state": {
|
|
||||||
"file": "docs/Obsidian笔记体系/Projects/知你-调测/知你--调测.md",
|
|
||||||
"mode": "source",
|
|
||||||
"source": false
|
|
||||||
},
|
|
||||||
"icon": "lucide-file",
|
|
||||||
"title": "知你--调测"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "c40cc65d2419fc22",
|
|
||||||
"type": "leaf",
|
|
||||||
"state": {
|
|
||||||
"type": "markdown",
|
|
||||||
"state": {
|
|
||||||
"file": "docs/学习笔记/Android WindowManagerService (WMS) 架构深度解析(第一次提示词).md",
|
|
||||||
"mode": "source",
|
|
||||||
"source": false
|
|
||||||
},
|
|
||||||
"icon": "lucide-file",
|
|
||||||
"title": "Android WindowManagerService (WMS) 架构深度解析(第一次提示词)"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
"currentTab": 3
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"direction": "vertical"
|
"direction": "vertical"
|
||||||
},
|
},
|
||||||
"left": {
|
"left": {
|
||||||
"id": "0e065eabdda832e7",
|
"id": "61450059f20f915c",
|
||||||
"type": "split",
|
"type": "split",
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "2a433fe0f7c72337",
|
"id": "da53592ec51ff7ee",
|
||||||
"type": "tabs",
|
"type": "tabs",
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "5b497a77c6d68c73",
|
"id": "c024a2ca8d9509c3",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "file-explorer",
|
"type": "file-explorer",
|
||||||
"state": {
|
"state": {
|
||||||
"sortOrder": "alphabetical",
|
"sortOrder": "alphabetical",
|
||||||
"autoReveal": true
|
"autoReveal": false
|
||||||
},
|
},
|
||||||
"icon": "lucide-folder-closed",
|
"icon": "lucide-folder-closed",
|
||||||
"title": "文件列表"
|
"title": "文件列表"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "845d54777fd1c51f",
|
"id": "866dd8c8b5439582",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "search",
|
"type": "search",
|
||||||
"state": {
|
"state": {
|
||||||
"query": "path:\"docs/Obsidian笔记体系/Config/\" ",
|
"query": "",
|
||||||
"matchingCase": false,
|
"matchingCase": false,
|
||||||
"explainSearch": false,
|
"explainSearch": false,
|
||||||
"collapseAll": false,
|
"collapseAll": false,
|
||||||
@@ -107,7 +65,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "65c02e8e96d3fa35",
|
"id": "fc645278d7fba125",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "bookmarks",
|
"type": "bookmarks",
|
||||||
@@ -120,23 +78,23 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"direction": "horizontal",
|
"direction": "horizontal",
|
||||||
"width": 457.5
|
"width": 300
|
||||||
},
|
},
|
||||||
"right": {
|
"right": {
|
||||||
"id": "1e41a867da6b7f39",
|
"id": "df584a0a293988b8",
|
||||||
"type": "split",
|
"type": "split",
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "ef77172a3f8f60a0",
|
"id": "44d87fa4a69d7032",
|
||||||
"type": "tabs",
|
"type": "tabs",
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "a990ef40768fba24",
|
"id": "6c4b61ba760eecc8",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "backlink",
|
"type": "backlink",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "docs/Obsidian/2026-01-05 个人文档管理.md",
|
"file": "docs/学习笔记/Android ANR 知识点总结.md",
|
||||||
"collapseAll": false,
|
"collapseAll": false,
|
||||||
"extraContext": false,
|
"extraContext": false,
|
||||||
"sortOrder": "alphabetical",
|
"sortOrder": "alphabetical",
|
||||||
@@ -146,25 +104,25 @@
|
|||||||
"unlinkedCollapsed": true
|
"unlinkedCollapsed": true
|
||||||
},
|
},
|
||||||
"icon": "links-coming-in",
|
"icon": "links-coming-in",
|
||||||
"title": "2026-01-05 个人文档管理 的反向链接列表"
|
"title": "Android ANR 知识点总结 的反向链接列表"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "2a4816e9de5c79b1",
|
"id": "5f6ecdb98efa5aaa",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "outgoing-link",
|
"type": "outgoing-link",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "docs/Obsidian/2026-01-05 个人文档管理.md",
|
"file": "docs/学习笔记/Android ANR 知识点总结.md",
|
||||||
"linksCollapsed": false,
|
"linksCollapsed": false,
|
||||||
"unlinkedCollapsed": true
|
"unlinkedCollapsed": true
|
||||||
},
|
},
|
||||||
"icon": "links-going-out",
|
"icon": "links-going-out",
|
||||||
"title": "2026-01-05 个人文档管理 的出链列表"
|
"title": "Android ANR 知识点总结 的出链列表"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "266c7e7083cb214c",
|
"id": "42daa9caba41cac7",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "tag",
|
"type": "tag",
|
||||||
@@ -179,7 +137,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "f88882a46f03096a",
|
"id": "994bca394167d46e",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "all-properties",
|
"type": "all-properties",
|
||||||
@@ -193,18 +151,18 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "9abea599d31b90b9",
|
"id": "e6d6c4e1986fdcf3",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "outline",
|
"type": "outline",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "docs/Obsidian/2026-01-05 个人文档管理.md",
|
"file": "docs/学习笔记/Android ANR 知识点总结.md",
|
||||||
"followCursor": false,
|
"followCursor": false,
|
||||||
"showSearch": false,
|
"showSearch": false,
|
||||||
"searchQuery": ""
|
"searchQuery": ""
|
||||||
},
|
},
|
||||||
"icon": "lucide-list",
|
"icon": "lucide-list",
|
||||||
"title": "2026-01-05 个人文档管理 的大纲"
|
"title": "Android ANR 知识点总结 的大纲"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -216,62 +174,31 @@
|
|||||||
},
|
},
|
||||||
"left-ribbon": {
|
"left-ribbon": {
|
||||||
"hiddenItems": {
|
"hiddenItems": {
|
||||||
"bases:新建数据库": false,
|
|
||||||
"switcher:打开快速切换": false,
|
"switcher:打开快速切换": false,
|
||||||
"graph:查看关系图谱": false,
|
"graph:查看关系图谱": false,
|
||||||
"canvas:新建白板": false,
|
"canvas:新建白板": false,
|
||||||
"daily-notes:打开/创建今天的日记": false,
|
"daily-notes:打开/创建今天的日记": false,
|
||||||
"templates:插入模板": false,
|
"templates:插入模板": false,
|
||||||
"command-palette:打开命令面板": false
|
"command-palette:打开命令面板": false,
|
||||||
|
"bases:新建数据库": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"active": "c40cc65d2419fc22",
|
"active": "ee62f962fb280c83",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
"docs/学习笔记/Android WindowManagerService核心原理深度解析(专家第二次提示词).md",
|
"docs/Obsidian笔记体系/Projects/女童生长激素项目/后台管理网址.md",
|
||||||
"docs/学习笔记/Android性能分析标准化操作手册.md",
|
"docs/学习笔记/Android ANR 知识点总结.md",
|
||||||
"docs/学习笔记/Android游戏整机性能卡顿与丢帧根因分析与优化指南.md",
|
"docs/Obsidian笔记体系/Projects/女童生长激素项目/ssl证书申请.md",
|
||||||
"docs/学习笔记/Android整机性能分析与问题定位实战指南.md",
|
"docs/Obsidian笔记体系/Projects/女童生长激素项目/项目目录位置.md",
|
||||||
"docs/学习笔记/DevOps学习.md",
|
"docs/Obsidian笔记体系/Projects/女童生长激素项目/使用系统nginx.md",
|
||||||
"docs/cursor/cursor使用技巧.md",
|
"docs/Obsidian笔记体系/Projects/女童生长激素项目/生长激素缺乏预测模型项目需求文档.md",
|
||||||
"docs/Obsidian/高频命令.md",
|
"docs/Obsidian笔记体系/Projects/女童生长激素项目/配置完成.md",
|
||||||
"docs/cursor/cursor.md",
|
"docs/Obsidian笔记体系/Projects/女童生长激素项目/宝塔nginx和系统nginx对比分析.md",
|
||||||
"docs/Obsidian笔记体系/Projects/聊天平台/测试用例.md",
|
"docs/Obsidian笔记体系/Projects/女童生长激素项目/宝塔面板.md",
|
||||||
"docs/Obsidian笔记体系/Projects/聊天平台/知你客服 6 号(检索增强记忆).md",
|
"docs/学习笔记/龙虾能力.md",
|
||||||
"docs/Obsidian笔记体系/Projects/聊天平台/聊天模型记忆解解方案.md",
|
"docs/龙虾openclaw/git同步与上传规范.md",
|
||||||
"docs/Obsidian笔记体系/Projects/聊天平台/未命名.md",
|
"docs/龙虾openclaw",
|
||||||
"docs/Obsidian笔记体系/Projects/聊天平台/知你客服5号的设计.md",
|
"docs/龙虾",
|
||||||
"docs/Obsidian笔记体系/Projects/聊天平台/agent智能体性能调测.md",
|
"docs/新建文件夹",
|
||||||
"docs/Obsidian笔记体系/Projects/聊天平台/接入方式.md",
|
"docs/学习笔记/龙虾配置.md"
|
||||||
"docs/Obsidian笔记体系/Projects/聊天平台/聊天平台.md",
|
|
||||||
"docs/adb调试命令/adb常用命令.md",
|
|
||||||
"docs/Obsidian笔记体系/Projects/聊天平台/app.md",
|
|
||||||
"docs/Obsidian笔记体系/Projects/聊天平台/数据库配置.md",
|
|
||||||
"docs/Obsidian笔记体系/Projects/saars开发/数据库配置.md",
|
|
||||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/智能配置助手功能已完成.md",
|
|
||||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/聊天智能机器人(苏苏).md",
|
|
||||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/电商系统用户订单处理流程设计方案.md",
|
|
||||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/个人简历.md",
|
|
||||||
"docs/Obsidian笔记体系/Projects/saars开发/aiapply/# 创建Agent经验总结.md",
|
|
||||||
"docs/Obsidian笔记体系/Projects/aitsc/ai提示词常用命令.md",
|
|
||||||
"docs/Obsidian笔记体系/Projects/聊天平台",
|
|
||||||
"docs/Obsidian笔记体系/Projects/aitsc",
|
|
||||||
"未命名 1.base",
|
|
||||||
"docs/Obsidian笔记体系/Projects/提示词大师",
|
|
||||||
"docs/学习笔记/产品经理",
|
|
||||||
"Pasted image 20260129111501.png",
|
|
||||||
"Pasted image 20260129111451.png",
|
|
||||||
"Pasted image 20260129111437.png",
|
|
||||||
"Pasted image 20260129111431.png",
|
|
||||||
"Pasted image 20260129111423.png",
|
|
||||||
"Pasted image 20260129111418.png",
|
|
||||||
"Pasted image 20260129111414.png",
|
|
||||||
"Pasted image 20260129111408.png",
|
|
||||||
"Pasted image 20260129111404.png",
|
|
||||||
"Pasted image 20260129111354.png",
|
|
||||||
"docs/产品经理",
|
|
||||||
"docs/Obsidian笔记体系/Projects/女童生长激素项目",
|
|
||||||
"docs/学习笔记/php",
|
|
||||||
"docs/cursor/php",
|
|
||||||
"com.xiaomi.appstore.appclaim.signature.verification.apk"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
162
docs/学习笔记/Android ANR 知识点总结.md
Normal file
162
docs/学习笔记/Android ANR 知识点总结.md
Normal file
@@ -0,0 +1,162 @@
|
|||||||
|
## 1. 什么是 ANR
|
||||||
|
|
||||||
|
ANR 全称:**Application Not Responding**,即**应用程序无响应**。
|
||||||
|
|
||||||
|
## 2. 触发条件
|
||||||
|
|
||||||
|
1. 只有 ** 主线程(UI 线程)** 才会产生 ANR。
|
||||||
|
2. 必须发生输入事件或特定组件操作:
|
||||||
|
|
||||||
|
- 按键、触屏等输入事件
|
||||||
|
- `BroadcastReceiver` 生命周期回调
|
||||||
|
- `Service` 生命周期回调
|
||||||
|
|
||||||
|
3. 事件响应超时,不同场景超时时间不同。
|
||||||
|
|
||||||
|
### 2.1 各场景超时时间
|
||||||
|
|
||||||
|
- **Activity 输入事件 / 生命周期**:主线程 5s 内未处理完毕
|
||||||
|
- **BroadcastReceiver#onReceive()**:主线程 10s 内未处理完毕
|
||||||
|
- **Service 生命周期**:主线程 20s 内未处理完毕
|
||||||
|
|
||||||
|
## 3. ANR 根本原因
|
||||||
|
|
||||||
|
### 3.1 主线程执行耗时操作
|
||||||
|
|
||||||
|
典型场景:
|
||||||
|
|
||||||
|
- 耗时网络访问
|
||||||
|
- 大量数据读写、数据库操作
|
||||||
|
- 硬件操作(如 Camera)
|
||||||
|
- 多线程被 Binder 对端 block
|
||||||
|
- 主线程调用 `Thread.join()`/`sleep()`/`wait()`、等待线程锁
|
||||||
|
- Service Binder 数量达上限,无法与 System Server 通信
|
||||||
|
- System Server 中 WatchDog 导致 ANR、Service 繁忙超时
|
||||||
|
|
||||||
|
### 3.2 非主线程导致
|
||||||
|
|
||||||
|
非主线程持有锁,导致主线程等待锁超时 / 无限等待,最终触发 ANR。
|
||||||
|
|
||||||
|
### 3.3 其他进程 / 系统资源问题
|
||||||
|
|
||||||
|
- 其他进程占用 CPU,本进程得不到时间片
|
||||||
|
- 内存泄漏导致频繁 Full GC,CPU 占用飙升
|
||||||
|
- 内存吃紧、系统频繁 coredump
|
||||||
|
|
||||||
|
> CPU 利用率说明:
|
||||||
|
>
|
||||||
|
> - 前台进程 ≤ 95%,后台进程 ≤ 5%(无前台时可超)
|
||||||
|
> - `RUNNABLE` 线程不一定耗 CPU
|
||||||
|
> - `TIMED_WAITING`/`WAITING` 线程不耗 CPU
|
||||||
|
> - I/O 操作本身不怎么耗 CPU
|
||||||
|
|
||||||
|
> 注意:
|
||||||
|
>
|
||||||
|
> “内存泄露” 可能是真实泄漏点,也可能是堆内存占用过大、内存吃紧,间接导致 ANR/CPU 过高。
|
||||||
|
|
||||||
|
## 4. ANR 类型及日志关键字
|
||||||
|
|
||||||
|
表格
|
||||||
|
|
||||||
|
|ANR 类型|超时时间|Logcat 关键字|
|
||||||
|
|---|---|---|
|
||||||
|
|InputDispatching Timeout|5s|`Input event dispatching timed out`|
|
||||||
|
|BroadcastTimeout|前台 10s<br><br>后台 60s|`Timeout of broadcast BroadcastRecord`|
|
||||||
|
|ServiceTimeout|前台 20s<br><br>后台 200s|`Timeout executing service`|
|
||||||
|
|ContentProviderTimeout|10s|`timeout publishing content providers`|
|
||||||
|
|
||||||
|
## 5. ANR 定位方法
|
||||||
|
|
||||||
|
入手点:ANR 前后日志 + `/data/anr/traces.txt`
|
||||||
|
|
||||||
|
### 5.1 日志分析
|
||||||
|
|
||||||
|
1. 搜索 `ANR in`:定位发生 ANR 的进程
|
||||||
|
2. 搜索 `ActivityManager:CPU usage from`:判断是否 CPU 过高
|
||||||
|
|
||||||
|
### 5.2 traces.txt 分析
|
||||||
|
|
||||||
|
1. 搜索 `held by tid=`:排查死锁
|
||||||
|
2. 查看 `stackSize=`:判断是否内存问题
|
||||||
|
|
||||||
|
### 5.3 整体分析步骤
|
||||||
|
|
||||||
|
1. 确定 ANR 时间点
|
||||||
|
|
||||||
|
- 关键字:`anr in`、`blocked`、`blockMonitor`、`freezedector`
|
||||||
|
- 获取:版本号、PID、是否前台、页面、温度、频点、ANR 类型
|
||||||
|
|
||||||
|
2. 根据 ANR 类型回溯对应时间段日志
|
||||||
|
|
||||||
|
- 查找 `Subject` / `Reason`
|
||||||
|
|
||||||
|
3. 分析 ANR 堆栈
|
||||||
|
|
||||||
|
- 查找 `sysTid=线程号`
|
||||||
|
- 状态为 `block`/`timeout` 一般为真实问题堆栈
|
||||||
|
|
||||||
|
|
||||||
|
### 5.4 核心分析思路
|
||||||
|
|
||||||
|
1. **查看 CPU 负载**
|
||||||
|
|
||||||
|
- user:用户态
|
||||||
|
- kernel:内核态
|
||||||
|
- iowait:IO 等待
|
||||||
|
- faults:内存缺页
|
||||||
|
|
||||||
|
2. **查看主线程状态**
|
||||||
|
|
||||||
|
- `Native`:正常空闲,等待消息
|
||||||
|
- `Runnable`:主线程执行耗时操作
|
||||||
|
- `Blocked`:主线程被锁阻塞,可查 `waiting to lock...held by thread`
|
||||||
|
|
||||||
|
3. **其他应用抢占 CPU**
|
||||||
|
|
||||||
|
日志会显示高占比包名,CPU 上限 = 核心数 × 100%
|
||||||
|
4. **系统服务 / Binder 问题**
|
||||||
|
|
||||||
|
搜索:`BinderProxy.transactNative`
|
||||||
|
|
||||||
|
可能原因:Binder 超时、Binder 资源耗尽
|
||||||
|
5. **内存紧张导致 ANR**
|
||||||
|
|
||||||
|
- 查看 ANR 前空闲内存
|
||||||
|
|
||||||
|
- 4G 及以下:阈值约 350M
|
||||||
|
- 4G 以上:阈值约 450M
|
||||||
|
|
||||||
|
- 查看 `trimMemory` 调用(level 越大内存越紧张:5/10/20/40/60/80)
|
||||||
|
|
||||||
|
|
||||||
|
## 6. 典型示例
|
||||||
|
|
||||||
|
1. 主线程与子线程互锁导致 ANR
|
||||||
|
2. Android 系统库崩溃(如 `libweexcore.so` 等)
|
||||||
|
3. `nativePollOnce` 阻塞
|
||||||
|
4. Binder 对端阻塞(如第三方推送 SDK)
|
||||||
|
|
||||||
|
## 7. 非应用自身导致的 ANR
|
||||||
|
|
||||||
|
1. **热限频**
|
||||||
|
|
||||||
|
- 温度 > 41℃
|
||||||
|
- 大核频点 < 1.8GHz 且跑满
|
||||||
|
|
||||||
|
2. **Monkey 异常场景**
|
||||||
|
|
||||||
|
- 焦点不在当前应用 / 页面已销毁,仍分发输入事件
|
||||||
|
- 不属于 App 代码问题
|
||||||
|
|
||||||
|
|
||||||
|
## 8. ANR 根本原因分类总结
|
||||||
|
|
||||||
|
表格
|
||||||
|
|
||||||
|
|原因类别|具体表现|
|
||||||
|
|---|---|
|
||||||
|
|主线程自身问题|主线程执行耗时操作、死循环、复杂计算、同步 IO / 网络|
|
||||||
|
|线程间竞争|主线程等待子线程锁、死锁、子线程崩溃导致主线程无限等待|
|
||||||
|
|CPU 被抢占|其他进程占满 CPU、频繁 GC|
|
||||||
|
|系统资源瓶颈|内存紧张、GC 频繁、系统服务繁忙、Binder 耗尽|
|
||||||
|
|系统 / 环境问题|热限频、Monkey 异常、系统服务超时|
|
||||||
Reference in New Issue
Block a user