- 博客(488)
- 资源 (8)
- 收藏
- 关注
原创 测试分层:JVM 单测、ViewModel 测试与 Compose UI Test
本文介绍了Compose应用测试的技术要点,主要包括三个目标:编写无框架依赖的纯Kotlin单元测试、掌握Compose UI测试方法、合理分配测试任务。文章提出了测试分层策略,将测试分为快速单元测试(纯函数)、中速测试(ViewModel逻辑)和慢速设备测试(UI和端到端)。重点讲解了StateSampleReducer的单元测试实现方法,包括测试用例设计和断言要点。同时介绍了Compose UI测试的基本配置和最小测试模板,强调了测试稳定性注意事项。
2026-05-13 11:00:00
666
33
原创 重组与参数稳定性:跳过规则、derivedStateOf 与调试
本文总结了Compose重组优化的核心要点:1)重组方向从读取状态的Composable向子树扩散;2)参数稳定性决定子项能否跳过执行;3)编译器通过@Immutable/@Stable注解推断稳定性,错误标注会导致UI不更新;4)derivedStateOf适用于高频输入低频输出的场景;5)通过StabilityLabScreen实验观察入参变化对跳过的影响;6)避免常见不稳定写法如新建列表传递、乱标注解等。强调优化优先级:先保证正确key和状态不可变,再考虑微观重组优化,并提供了自检清单和工具使用建议。
2026-05-13 10:00:00
696
4
原创 深入 MaterialTheme:掌握 ColorScheme 与 Typography 的设计核心
本文介绍了Jetpack Compose中Material3主题系统的实现要点,主要包括:1)使用MaterialTheme.colorScheme和typography消费设计token;2)通过darkColorScheme/lightColorScheme实现深浅色切换;3)建立语义色系统(primary/tertiary等)与组件默认值的映射关系。文章详细说明了主题结构、自定义Token的实现方式,并提供了形状与海拔的设计规范。
2026-05-10 23:00:00
741
27
原创 Navigation Compose:NavHost、NavController 与参数
本文介绍了使用Jetpack Compose Navigation实现路由导航的技术要点。主要内容包括:1) 使用rememberNavController()和NavHost注册路由;2) 通过navArgument和NavType声明路径参数;3) 理解NavBackStackEntry在获取参数和状态管理中的作用。文中提供了完整的导航示例代码,展示了从主页到各功能模块的路由配置,特别是带参数的profile路由实现。
2026-05-10 22:00:00
515
29
原创 LazyColumn 懒加载、items 与 key
本文介绍了Jetpack Compose中LazyColumn的使用要点:1) 懒组合特性使可视区域外的item会被dispose;2) 正确使用items()/itemsIndexed()与key参数避免状态串行;3) item lambda捕获范围与参数稳定性影响重组。重点讲解了key的技术原因、常见错误及性能优化建议,包括animateItemPlacement动画、contentType复用、避免大对象捕获等。
2026-05-08 11:42:20
411
7
原创 副作用 API:LaunchedEffect、DisposableEffect、SideEffect
本文对比了Compose中三个关键API的生命周期特性:LaunchedEffect(协程执行,可挂起)、DisposableEffect(注册/反注册)和SideEffect(组合后同步状态)。重点分析了它们的执行时机、取消机制及适用场景,指出LaunchedEffect需处理协程取消,DisposableEffect必须包含onDispose清理,而SideEffect仅适合轻量同步操作。文章还提供了技术决策建议和常见风险清单,强调副作用管理应与ViewModel合理分工,避免内存泄漏和竞态问题。
2026-05-08 10:25:30
376
5
原创 Modifier 链与顺序、测量与命中区域
本文探讨Jetpack Compose中Modifier链的执行顺序与常见应用场景。关键点包括: 顺序影响:padding、background等修饰符的排列顺序会改变布局约束、绘制区域和点击范围,需注意链式调用的从左到右解析逻辑; 典型对比:通过clickable与padding的顺序差异,分析点击区域的变化; 分类与风险:归纳尺寸、滚动、绘制等修饰符类别,并警示动态拼接Modifier可能导致的重组性能问题。
2026-05-07 16:00:00
549
36
原创 状态 StateFlow、ViewModel 与 UI 收集
本文介绍了Compose中状态管理的核心实践,重点解析了StateFlow在UI层的应用模式。文章首先明确了技术目标:掌握单向数据流、StateFlow特性及生命周期感知收集。随后通过StateSampleScreen示例,展示了ViewModel管理StateFlow和Channel处理一次性事件的实现方式,并对比了Snackbar事件的不同处理方案。文章还提供了常用API速查表,包括ViewModel获取、状态收集和派生状态等关键操作。
2026-05-07 10:56:00
855
23
原创 Compose 入门:@Composable、组合与重组
本文以Compose首页计数器为例,解析Compose核心机制。首先建立@Composable函数的心智模型,说明其通过编译器生成UI树记录。重点讲解状态管理:remember保存组合内状态,mutableStateOf建立观察关系触发重组。通过HomeViewModel展示状态容器设计——使用不可变data class和StateFlow实现单向数据流。
2026-05-06 19:01:44
408
5
原创 Android 高级工程师模拟面试问答
本篇是 Android 高级岗模拟面试口语稿:先自答再对照层次,用自有案例替换,勿死背。涵盖自我介绍、优化案例叙事、Handler/Binder、协程、MVVM、卡顿与 OOM 分层排查,并点出后台线程经锁或重初始化链拖慢主线程。另含组件化取舍、线上四步、高职职责、带新人与跳槽话术;收尾强调先结论、讲取舍、备多个可展开案例。
2026-05-01 09:00:00
715
13
原创 Android AI 面试速刷版
这一篇只做一件事:让你在面试前 10~20 分钟把 AI 驱动开发 相关问题快速刷一遍。这不是只给 `Android` 工程师看的内容。`AI` 驱动开发本质上考的是软件工程能力:怎么提效、怎么 review、怎么验证、怎么控制风险、怎么把模型能力落到业务系统里。下面会先给通用答法,再用 `Android` 作为客户端落地例子。
2026-04-30 16:00:00
736
26
原创 Android 高级工程师 AI 面试专题:AI 驱动开发与工程落地
这篇文章的重点是:1. 你如何用 AI 提升研发效率;2. 你如何控制 AI 生成代码的风险;3. 具体业务接入大模型能力时,怎么做架构、性能和容错设计;4. 以 Android 为例,客户端 AI 功能落地时要重点关注什么。
2026-04-30 15:00:00
757
20
原创 Android 高级工程师面试终极速背版
本文提供了一份Android面试快速复习指南,总结了一套高效应答模板和关键技巧。全文强调高级岗位面试要展现问题拆解、技术取舍和实战经验,而非单纯技术点的堆砌。建议面试前重点复习本文及推荐的补充资料,用真实案例展现专业判断力
2026-04-29 14:11:23
580
30
原创 Android 高级工程师专题深挖:WebView、Context 与初始化链
这篇文章深入探讨了Android开发中WebView相关的性能优化与工程实践问题,特别适合高级岗位面试准备。文章指出WebView的兼容性、Context使用和启动优化等常见问题背后隐藏着更深层次的挑战,如初始化链触发、线程阻塞和内存泄漏风险。
2026-04-29 10:31:49
566
23
原创 Android 性能优化专题面试稿
面试性能优化专题的高阶答法 性能优化面试的核心不是罗列方向,而是展示问题闭环能力:如何定位问题、分析根因、设计方案并验证收益。 1. 回答结构 采用“背景→现象→数据→定位→根因→方案→收益→风险”框架,强调: 基线数据:用指标量化问题(如首屏时长、OOM率) 关键路径:聚焦用户感知最强的阻塞点(如主线程任务、锁等待) 副作用:优化后如何监控回归风险(如首次进入其他页面变慢)。
2026-04-27 10:00:00
989
29
原创 Android 高级工程师面试速记版
本文为Android面试快速复习指南,提供结构化答题模板与高频考点速记。内容涵盖:1)面试回答"结论-原理-场景-取舍-项目"五步法;2)并发编程(HashMap线程安全、协程特性等);3)Framework核心(Activity启动、Handler机制等);4)架构设计(MVVM本质、状态管理);5)性能优化分层策略;6)项目案例表达框架。重点推荐死磕12个高频技术点,包括Binder原理、Compose重组等,并给出最后30分钟复习优先级建议。
2026-04-27 08:00:00
536
2
原创 Android 高级工程师面试参考答案:项目经历、自我介绍与实战案例表达
这篇文章总结了高级工程师面试中如何有效展示技术经验和项目能力的技巧。全文围绕如何避免流水账式回答,提供了10个关键问题的结构化应答框架: 自我介绍采用4段式:背景+职责+成果+求职意向 项目介绍强调4要素:业务价值+个人贡献+技术难点+量化结果 重点准备5类案例:性能优化/线上事故/架构改造/复杂业务/团队推进 。
2026-04-25 12:00:00
1256
30
原创 Android 高级工程师面试参考答案:工程化、组件化与系统设计
高级工程师面试常考察工程化、组件化与系统设计能力。组件化失败通常因模块边界不清、公共模块膨胀、依赖失控等;模块拆分应优先按职责稳定性而非机械分层;依赖治理是工程化核心,需明确依赖方向、收敛跨模块访问;构建优化需定位具体瓶颈;崩溃治理需闭环管理;复杂状态管理应分层处理;方案设计需权衡利弊;组件化改造应分阶段推进;团队协作能力体现在规范制定、任务拆分与方案落地;系统设计需明确目标、识别复杂度、权衡方案并验证效果。
2026-04-25 08:00:00
593
6
原创 Android 高级工程师面试参考答案:网络、存储与安全
本文探讨了移动开发中网络、存储与安全三大核心模块的常见问题及解决方案。在网络方面,分析了HTTP/HTTPS区别、OkHttp价值及弱网优化策略;在存储方面,比较了SharedPreferences、MMKV和数据库的适用场景,并讨论了离线缓存设计;在安全方面,阐述了签名、混淆、加固的作用,以及WebView风险和安全系统工程的重要性。文章强调高级开发者应注重设计思路和风险控制,而非仅掌握技术概念。
2026-04-24 14:24:49
653
4
原创 Android 高级工程师面试参考答案:性能优化
本文系统梳理了移动端性能优化的核心问题与解决方案。主要内容包括:1)启动优化的关键路径识别与任务调度策略;2)卡顿问题的分层定位方法(主线程阻塞、锁等待、IO问题);3)内存泄漏与抖动的排查思路;4)OOM问题的类型化分析方法;5)图片优化的四层架构(网络/解码/内存/渲染);6)WebView初始化等隐性性能问题。文章强调性能优化需建立系统思维,关注关键路径识别、问题分层定位和收益代价权衡,而非简单套用优化手段。每个问题都配有面试追问场景和实战应答技巧,适合中高级开发者提升工程化思维。
2026-04-24 11:30:41
598
4
原创 Android 高级工程师面试参考答案:架构设计、Jetpack 与 Compose
本文探讨了Android开发中架构设计、Jetpack组件和Compose的实践要点。主要内容包括:MVVM相比MVP的优势在于集中管理页面状态,降低维护成本;ViewModel应作为状态协调者而非业务仓库;LiveData、StateFlow和SharedFlow需区分状态和事件;Jetpack组件解决特定复杂度问题;依赖注入提升代码可维护性;MVI适合复杂状态管理;Compose本质是声明式状态驱动UI;重组优化的核心是状态范围控制。文章强调架构选择应基于实际复杂度,而非盲目追随新技术。
2026-04-24 09:00:00
912
20
原创 Android 高级工程师面试参考答案:Framework、生命周期、View 与 Binder
本文探讨了Android开发中的核心机制与常见问题,主要包括:1)Activity启动流程的关键环节,强调系统服务调度和进程创建;2)onSaveInstanceState的适用场景与局限性;3)Handler/Looper消息循环模型的工作原理;4)ANR的深层原因与排查方法;5)事件分发机制与滑动冲突解决;6)View绘制流程的性能优化要点。文章着重指出,高级开发者应理解系统链路而非仅记忆类名,并提供了应对面试追问的实用回答策略。
2026-04-22 10:00:00
733
14
原创 Android 高级工程师面试参考答案:语言基础与并发
本文探讨了Android面试中常被问及的Java/Kotlin并发问题,从HashMap线程不安全、volatile特性、锁机制选择到线程池配置和协程应用,系统性地分析了各类并发场景下的技术选型与实践要点。文章不仅提供标准答案,更强调结合业务场景的解决方案,如页面状态管理、任务取消机制和结构化并发控制,帮助开发者深入理解并发编程的本质及其在移动开发中的实际应用。
2026-04-22 09:00:00
699
26
原创 新手向:Google Play 应用转移到另一个开发者账号(附控制台截图说明)
第一次做 Google Play 应用转移时,最容易懵两件事:不知道在控制台哪里点,以及分不清「对方点了接受」和「转移已经彻底完成」。本文结合 Play 控制台真实界面,按时间线说明:设置里发起转移、接收方在通知里审核、双方看到的待处理状态、原账号收到成功通知、目标账号首页出现应用;并补充官方文档中的前置准备(政策、报表备份、注册交易 ID、付费/签名等特殊情形),方便新手按图索骥、少踩坑。政策与界面可能变更,操作前请以 Google 官方帮助:将应用转移到其他开发者账号 为准。
2026-04-13 10:00:00
992
17
原创 Java 并发原子类完全指南:Atomic 全家桶、CAS/JMM、ABA、LongAdder、源码阅读路线与经典实战
java.util.concurrent.atomic 提供基于 CAS 的无锁工具,支持对单个变量进行原子更新。本文涵盖 Atomic 全家桶、CAS/JMM 原理、ABA 问题与解决、AtomicLong vs LongAdder 性能取舍,并提供源码阅读路线、常见错误对照与实战代码,帮助你在并发场景下写出既快又稳的代码。适用于 Java 与 Android 开发者。
2026-04-08 09:00:00
1726
22
原创 WebView 并发初始化竞争风险分析
摘要 验证发现后台线程调用getDefaultUserAgent()与主线程首次new WebView()并发时,会共享WebView初始化链,导致主线程出现阶段性阻塞和交错执行。测试覆盖Android 7.1-16多个版本,在模拟器和真机均复现该问题,主线程卡顿可达秒级,存在ANR风险。问题本质是共享初始化链上的交错推进与局部阻塞,而非完全死锁。真机表现具有波动性,部分样本会显著放大延迟。建议关注该并发场景对启动性能的影响。
2026-04-01 09:00:00
1799
26
原创 WebSettings.getDefaultUserAgent:线程、阻塞与 Context 选择(源码图解)
很多人默认认为 WebView 相关 API 必须主线程调用,但 WebSettings.getDefaultUserAgent(context) 真的是这样吗?本文通过阅读 Framework 和 Chromium WebView 源码,拆解这个 API 的完整调用路径,分析它在子线程调用时是否安全、首次调用为什么可能变重,以及 Activity context 与 Application context 在这个场景下的实际差异,最后给出更符合工程实践的使用建议。
2026-03-29 09:00:00
452
7
原创 单例初始化中的耗时操作如何拖死主线程
在 Android 项目中,单例通常被当作“轻量、全局、可随取随用”的基础设施对象。但如果把耗时逻辑放进单例的构造函数或首次初始化路径中,就可能把原本局部的耗时放大成全局阻塞,最终引发 ANR。本文通过一个最小化伪代码示例,说明两类常见问题:1.主线程首次初始化单例,构造函数中的同步耗时直接导致 ANR;2.后台线程首次初始化单例,但由于持有单例锁,主线程后续访问时仍可能被拖住,最终 ANR。
2026-03-26 09:00:00
497
18
原创 系统分析师-2024年5月案例真题及参考答案(回忆版本)
本文摘要:试题一考察面向对象需求分析技术,包括需求获取方法(问卷调查、访谈等)、用例图与顺序图分析(用例描述、参与者等)以及设计类对象类型(边界类、控制类、实体类)。试题二比较HTTP与WebSocket连接的异同点。试题三通过停车场案例展示结构化分析方法,包括需求分类、数据流图绘制和判定表应用。试题四涉及数据库规范化(1NF至BCNF)和SQL优化策略(反规范化与触发器应用)。试题五讨论中间件特性(如Kafka、Redis)及其在嵌入式系统中的应用优势。各试题均包含典型问题解析与参考答案要点。(150字)
2026-03-02 09:00:00
1181
7
原创 系统分析师-2024年11月案例真题及参考答案(回忆版本)
本文摘要包含三套计算机系统设计试题的答案要点: 超市自助结算系统DFD设计题,重点解答了数据流图与流程图的区别,补充了系统各模块的数据流关系,并列举了DFD常见的三类错误(黑洞/奇迹/灰洞)。 面向对象设计题,解析了边界类、实体类和控制类的划分标准,并以论文管理系统为例进行分类,同时阐述了开闭原则的实现要求(通过抽象层扩展而非修改原有代码)。 农业物联网系统设计题,分析了时序数据库(IoTDB)适合存储传感器数据的原因(高写入、时间序列特性),说明了Netty框架的优势(高性能NIO、模块化扩展),并讨论了
2026-02-28 09:00:00
1621
23
原创 系统分析师-2025年5月试题四&试题五
本文包含两个数据库系统案例分析。案例一分析电商系统数据库设计,涉及订单表的函数依赖分析、范式分解(1NF到BCNF)、分解后的依赖保持性和无损性判断,以及触发器优化方案。案例二讨论地铁站智慧管理系统的Web架构设计,包括MVC架构与SSM框架的实现原理(SpringMVC控制器、MyBatis模型、视图解析),系统分层架构(表示层、数据层、平台层),以及混合云存储方案的选型理由。两个案例均涵盖数据库规范化理论和实际系统架构设计的关键技术要点。
2026-02-10 14:18:51
1144
15
原创 系统分析师-2025年5月试题二
摘要:本文基于电力风险管理系统类图设计案例,分析三个核心问题。问题1完成类图填空,将6个类名对应到系统功能模块(如WorkRisk、InfraRisk等)。问题2分析类间关系耦合度排序(实现>泛化>组合>聚合>关联>依赖),并指出RiskAnalysis与GeneralAlarm之间错误的泛化关系应改为关联关系。问题3总结UML五大视图(逻辑、实现、进程、部署、用例)及其对应的UML图类型。案例通过类图设计展示了系统分析师在建模过程中的关键考量。(149字)
2026-02-10 09:52:26
1002
12
原创 系统分析师-2025年5月试题一
2025年5月试题一。本文以某企业客户关系管理系统开发为例,介绍了系统需求分析中的用例建模方法。文章首先概述了系统功能模块(基础数据管理、客户管理、服务管理等),然后针对三个问题展开:1)构造用例模型的四个阶段(识别参与者、合并需求、细化描述、调整模型);2)分析系统涉及的参与者(管理员、客户经理等)和用例(用户注册、服务处理等);3)说明用例间的三种关系(泛化、包含、扩展)并举例说明。全文系统性地阐述了面向对象需求分析方法在实际项目中的应用。
2026-02-06 10:03:07
802
5
原创 系统分析师论文写作要点
本文系统介绍了系统分析师考试的论文写作方法与技巧。考试为2小时机试,要求完成2500字左右的论文写作,主要考察需求工程、软件测试、系统架构设计等内容。文章详细阐述了不同经验水平考生的复习策略,强调平时积累的重要性,并提供了论文写作的通用模板:摘要300字、项目背景500字、主体1200字、结尾500字。重点讲解了项目背景的合理构造方法、评分标准及常见问题解决方案,通过多个范文实例展示了不同主题论文的写作框架。最后指出,成功的论文写作关键在于将理论知识与实际项目经验有机结合,采用标准化的写作结构,避免常见错误
2026-02-02 09:00:00
1193
18
原创 系统分析师-信息物理系统分析与设计
信息物理系统(CPS)是融合计算资源与物理资源的智能系统,通过感知、通信、控制等技术实现物理与信息空间的实时交互。文章首先阐述了CPS与物联网的关系,指出CPS更强调闭环反馈控制。其次介绍了CPS的三层架构(单元级、系统级、系统之系统级)及其典型构成(传感器、执行器、决策单元)。重点分析了CPS核心技术包括智能感知、工业软件、工业网络及云计算平台,并详细列举了20种相关通信协议(如RFID、LoRa、MQTT等)。最后探讨了CPS在工业设计、生产制造、产品服务和产业链协同等领域的应用解决方案。
2026-01-30 14:54:14
1505
18
原创 系统分析师-微服务系统分析与设计
本文系统阐述了微服务系统的架构设计与开发实践。首先介绍了微服务的基本概念、特征及与传统单体架构的区别,重点分析了微服务系统的自治性、松耦合、分布式部署等技术特点。其次详细探讨了六种典型的微服务架构模式,包括聚合器、代理、链式等模式的应用场景。在开发实践方面,深入讲解了容器化部署、服务注册发现、通信机制等关键技术,并比较了Docker、Kubernetes、gRPC等主流技术方案的优劣。最后从功能、性能、安全等维度系统梳理了微服务测试方法论。
2026-01-27 10:19:27
1185
26
原创 系统分析师-大数据处理系统分析与设计
大数据处理系统是一种用于处理大规模数据集的软件工具,它们能够利用分布式计算处理,从各种来源收集和存储大量数据,并且能够以高效的方式处理这些数据,使得用户可以从中获取有价值的信息,帮助企业或组织快速进行决策。
2026-01-25 10:00:00
1050
12
原创 系统分析师-移动应用系统分析与设计
本文系统介绍了移动应用开发平台、开发环境、架构模式及开发方式。重点分析了阿里巴巴EMAS、腾讯TMF等主流开发平台的特点,对比了Android与iOS系统差异。详细阐述了MVC、MVP、MVVM等架构演进历程,以及原生开发、混合开发等技术路线的优劣势。同时探讨了无代码开发平台的发展趋势和应用场景,为移动应用开发提供了全面的技术参考。文章覆盖了从开发工具选择到架构设计的关键环节,对开发者具有实践指导意义。
2026-01-23 14:32:21
886
41
原创 Flutter 通过 Android Studio 打包 APK 完整教程
本文详细介绍了Flutter项目生成Android发布包(APK)的完整流程。首先说明环境要求,包括Android Studio、Flutter SDK等工具的配置。然后分步骤讲解如何生成签名密钥、创建密钥配置文件,并针对Groovy DSL和Kotlin DSL两种构建文件分别给出配置方法。接着提供三种打包方式:通过Build菜单、Gradle面板或Terminal命令行。最后列举了常见错误及解决方案,包括签名文件路径错误、混淆配置问题等。整个过程涵盖了从环境准备到最终APK生成的完整流程。
2026-01-21 11:00:00
3439
10
原创 Sublime Text 快捷键完全指南
本文详细介绍了Mac和Windows平台下SublimeText的正则搜索替换功能。核心内容包括: 平台专属快捷键:Mac以⌘键为核心(⌘+Option+F/R),Windows以Ctrl键为主(Ctrl+H/Alt+R) 正则表达式实战:通过提取JSON日志中的req_id字段案例,详解分组捕获和引用(使用()和\1) 高级技巧:多字段提取、条件替换、多选编辑等 平台特色:Mac的触控板集成与Windows的多选编辑(Ctrl+D/Alt+F3) 故障排查
2026-01-21 08:00:00
939
4
Android MediaRecorder 视频录制 Demo
2024-08-16
Android 架构MVC MVP MVVM 实践
2021-08-17
系统架构设计师范文参考
2024-08-07
HTML 入门资料Demo
2024-01-23
BroadcastReceiverDemo.zip
2021-06-29
SQLite用户信息的增删改查
2021-06-22
ContentProviderDemo.zip
2021-06-25
Android-标准体重计算器
2021-07-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅