Skip to content

SDK 实践检查与术语参考 ​

Android 应用开发、设备通信与软硬件一体 SDK 技术笔记

本文档围绕 Android 基础、Kotlin 与 Jetpack、网络通信、BLE 与 Wi-Fi 配网、SDK 设计和性能稳定性展开。阅读目标是理解基础机制,掌握方案取舍,并通过工程案例和运行证据验证结论。

阅读按三条主线展开:Android 基础与异步机制、性能问题的定位闭环、设备通信 SDK 的状态与异常管理。座舱多屏交互和冷启动优化作为贯穿案例;Kotlin、MVVM 和设备通信结合小型验证项目理解。

文档包含 72 个技术主题、4 组代码与设计练习、工程案例、综合场景和两天学习安排。P0 表示优先掌握,P1 表示在基础稳定后补齐;优先级依据知识依赖与工程场景设置。技术版本核对日期为 2026 年 9 月 22 日。

知识结构与阅读方法 ​

技术领域与实践要求 ​

技术领域实践要求优先阅读
软硬件一体 SDK 开发与维护API 清晰,状态正确,异常可恢复,集成成本可控Q40 至 Q56
四大组件与 Android 基础生命周期、线程、进程、View 机制说得准确Q01 至 Q24
Jetpack Kotlin MVVM能说明状态归属与生命周期,能读写关键代码Q25 至 Q32
OkHttp Retrofit JSON会区分分层职责,处理超时、鉴权和弱网Q33 至 Q39
BLE Wi-Fi Socket能讲完整通信链路,区分连接成功与业务成功Q40 至 Q49
启动 卡顿 内存 功耗优化能从指标和证据定位原因,并验证收益和副作用Q57 至 Q64
兼容性 线上稳定性 团队协作能设计复现矩阵、观测信息、灰度和回滚Q55 至 Q56 及 Q65 至 Q72

怎样理解一个技术主题 ​

先明确结论,再理解关键机制,最后检查边界和工程场景。例如学习屏幕旋转时的生命周期,先确认旧实例销毁、新实例创建的顺序,再分析重建原因以及数据保存方式。

每个主题分三遍阅读:第一遍看“核心结论”,建立概念;第二遍理解机制和反例;第三遍结合“扩展说明”,用一个具体场景或小段代码验证。不要仅凭读懂文字判断是否掌握。

工程实践背景 ​

贯穿案例来自华为 OD 鸿蒙智能座舱应用开发中的多屏互动模块,主要涉及 Android 原生应用设计与交付,主力语言是 Java。冷启动专项通过 Perfetto 分析主线程、首帧和初始化依赖,结合异步 Inflate、任务后台化、按需加载和初始化时序调整,将响应时延从 380ms 优化到 240ms,启动完成时延从 1200ms 优化到 700ms。案例重点是复杂场景下的性能分析、模块设计和系统联调方法。

指标定义与验证边界见 Q65。Kotlin、BLE 和 Wi-Fi 配网的实验结论应标明验证条件,区分文档学习、小型实验与生产环境中的实际结果。

建议的实践顺序 ​

第一,能够画出“界面事件、ViewModel、Repository、设备 SDK、设备回包、状态更新”的完整路径。第二,能够解释 BLE 从扫描到业务就绪的全过程,以及 TCP 为什么需要组帧。第三,为优化案例记录测量起止点、定位证据、方案取舍与回归结果。

四大组件与生命周期 ​

View 绘制与触摸事件 ​

Java 并发与异步机制 ​

Kotlin Jetpack 与 MVVM ​

Jetpack 常用组件的职责补充 ​

组件解决什么问题使用边界
Lifecycle感知拥有者的生命周期状态监听和收集应绑定正确拥有者
Room为 SQLite 提供结构化访问支持持久化设备记录 注意迁移 事务与线程
WorkManager调度可延后且需要可靠执行的工作适合日志补传 不保证某秒立即运行 也不是长连接容器
DataStore保存配置或小型结构化数据不代替适合关系查询的大型数据库
Navigation管理页面导航与相关状态理解导航图与 ViewModel 作用域
Paging分页加载与展示大量数据不应一次把海量设备历史装进内存

Room 的事务保证一组数据库操作整体一致,不会自动覆盖外部设备动作。WorkManager 的“可靠执行”也不等于业务天然恰好一次,重试任务仍然需要幂等设计。选组件先看任务性质,再看框架能力。

网络请求与接口联调 ​

BLE Wi-Fi 与 Socket 通信 ​

SDK 架构与工程交付 ​

性能与稳定性优化 ​

工程案例与综合场景 ​

学习路线与实践检查 ​

两天集中学习安排 ​

时间块任务完成标准
第一天上午 2 小时Q01 至 Q16 组件 View 与帧调度能口述生命周期并解释事件拦截和绘制流程
第一天下午 2 小时Q17 至 Q24 Handler 线程与 Binder能判断任务在哪个线程执行以及谁负责取消
第一天下午 2 小时Q25 至 Q32 Kotlin MVVM写出并运行一次状态加载与错误处理
第一天晚上 1 小时Q57 至 Q66 性能与项目整理一份项目记录 检查结论是否有证据
第二天上午 2 小时Q40 至 Q49 设备通信不看材料讲完整 BLE 与配网流程
第二天下午 1.5 小时Q33 至 Q39 网络解释超时 重试 鉴权并发与慢请求拆解
第二天下午 1.5 小时Q50 至 Q56 SDK 设计设计 API 状态机 错误分类与测试矩阵
第二天晚上 1 小时Q65 至 Q72 综合实践完成实践检查并补齐理解偏差

时间不足时,优先顺序为 Q28 至 Q32、Q17 至 Q24、Q40 至 Q49、Q57 至 Q66,再回到 View 和组件基础。已经熟悉的内容通过小型验证后直接跳过,不必从第一页平均用力。

设备连接与状态面板实践 ​

做一个“设备连接与状态面板”:页面显示连接状态与最近数据,ViewModel 暴露不可变 UI 状态,Repository 调用设备接口;先用 FakeTransport 模拟成功、超时、断连和重复回包,再按条件接入真实 BLE 或 Socket。

**验收点:**旋转后不重复创建连接;重复点击不会产生无限并发;断连后待完成请求能结束;旧会话回调不会改写新会话;退出后没有监听和线程持续增长;UI 高频状态更新不会把命令回包丢掉;错误日志能定位失败阶段。

这项练习用于串联各层知识。实现后保留 README、状态转换说明、复现步骤和实际运行证据,便于后续检查、维护与团队交流;未实现或未验证的部分应明确记录。

一次 45 分钟知识检查 ​

时长检查内容核心要点
3 分钟梳理工程背景与目标明确一个可验证的工程案例
5 分钟Q03 Q28 Q29 旋转与 ViewModel生命周期顺序 作用域 进程死亡边界
5 分钟Q13 Q16 事件与绘制拦截取消 帧调度 实际呈现区别
6 分钟Q17 Q20 Q23 并发与 IPCLooper 归属 有界并发 同步 Binder 风险
7 分钟Q41 Q42 Q48 通信回调驱动状态机 业务确认 消息边界
7 分钟Q50 Q51 Q68 SDK 情境设计契约 资源归属 超时与幂等
8 分钟Q65 Q66 性能案例分析指标定义 Trace 证据 方案取舍 回归
4 分钟Q71 Q72 实践边界与协作验证范围明确 协作方法清楚

**检查方法:**每一部分按 0 至 3 分记录:0 分表示尚未理解;1 分表示知道定义但不清楚机制;2 分表示定义、机制与边界基本正确;3 分表示能够给出具体场景、运行证据或可验证方案。检查后先修正事实错误和理解偏差,再补充实践记录。

十二条关键结论 ​

  1. Service 默认不替你创建后台线程,绑定也不必然是跨进程。
  2. Handler 的执行线程由 Looper 决定,post 到主线程仍会占用主线程。
  3. suspend 不表示自动切后台,协程顺序调用不会自动并行。
  4. ViewModel 保留有作用域边界,原对象不能跨进程死亡存活。
  5. SavedStateHandle 保存小型恢复状态,不替代持久化存储。
  6. onResume 和 doFrame 结束都不等于目标内容已经实际呈现。
  7. BLE 连接成功、订阅成功、握手成功与业务成功是不同阶段。
  8. GATT 操作返回已受理,不能直接当作完成回调。
  9. TCP 没有业务消息边界,超时也不证明命令没有执行。
  10. 后台化仍要管理依赖、并发、取消和资源清理。
  11. 权限要结合系统版本、targetSdk、API 和用户当前授权状态。
  12. 项目指标要说明起止点、环境、统计方法与自己的实际贡献。

项目接入前需要澄清的问题 ​

“SDK 主要连接哪类设备,BLE、Wi-Fi 和 Socket 各自承担哪些能力?”这能帮助判断工作重点是协议、平台适配还是上层业务。

“SDK 的宿主是内部应用还是外部客户应用,公开 API 和版本兼容如何管理?”这能帮助判断工程交付与支持成本。

“目前最主要的稳定性或性能问题发生在哪个阶段,团队如何获取设备侧与应用侧联合日志?”这有助于确定联调方式与 Perfetto 分析范围。

“项目当前阶段最重要的交付是什么,Android、固件、测试和算法团队怎样分工?”这有助于明确交付预期和协作方式。

术语与官方资料 ​

易混术语速查 ​

术语通俗含义
SDK给其他开发者集成使用的能力包及接口 文档和示例
BLE低功耗蓝牙 常用于发现 控制和小量数据交换
GATTBLE 中组织与访问服务和特征数据的一套规则
CCCD配置客户端接收特征通知或指示的常见描述符
MTU某协议层一份传输单元的大小上限 不是直接等于业务载荷
SoftAP设备以接入点方式创建热点
IPC进程间通信的总称
BinderAndroid 常用的进程间通信机制
AIDL描述接口并生成 Binder 调用适配代码的工具机制
ParcelAndroid 用于组织跨边界传输数据的容器
MVVM将界面 状态逻辑与数据职责组织清楚的架构方式
背压消费跟不上生产时 控制速率 排队或数据保留策略
幂等同一意图重复执行不会产生额外的业务副作用
TTID 与 TTFD初始显示时间与完整显示时间相关的启动指标
ANR系统判定应用未及时完成某类响应

官方资料索引 ​

正文中的 S 编号对应以下资料。Android 权限、后台限制及库 API 应以项目实际采用的系统、targetSdk 和依赖版本核对。示例用于理解机制,不构成完整的生产 SDK。

S01 Android Developers Activity 生命周期

S02 Android Developers 任务与返回栈

S03 Android Developers 绑定服务

S04 Android Developers 前台服务类型要求

S05 Android Developers App Startup 初始化管理

S06 Android Developers ViewGroup 触摸事件管理

S07 Perfetto FrameTimeline 与卡顿分析

S08 Android Developers Handler API

S09 Android Developers ThreadPoolExecutor API

S10 Kotlin 空安全

S11 Kotlin 协程基础

S12 Kotlin 协程异常处理 与 取消和超时

S13 Android Developers ViewModel 概览

S14 Android Developers ViewModel 保存状态

S15 Kotlin StateFlow API

S16 Android Developers 生命周期感知协程

S17 Square Retrofit API

S18 Square OkHttp 拦截器指南

S19 Android Developers 蓝牙权限

S20 Android Developers BLE 数据传输与通知

S21 Android Developers BluetoothGatt API 与 Android 14 MTU 行为变化

S22 Android Developers Wi-Fi Network Request API

S23 Android Developers 附近 Wi-Fi 设备权限

S24 Android Developers 面向 Android 17 的行为变化

S25 IETF RFC 9293 TCP 规范

S26 Android Developers 应用启动时间

S27 Android Developers AsyncLayoutInflater API

S28 Android Developers Java 内存分析

S29 Android Developers ANR 分析

S30 Android Developers Macrobenchmark 与 Baseline Profiles

原资料:Android 智能硬件 SDK 技术 Wiki

用完整回答理解机制,用真实证据解释项目。