- 博客(33)
- 收藏
- 关注
原创 Claude Code 六种扩展能力整理
文章摘要 本文系统梳理了Claude Code的六种扩展能力及其应用场景: CLAUDE.md:项目常驻规则文档,分全局/项目/模块三级存放 Skills:按需加载的专项方法库,通过描述触发或命令调用 Subagents:独立角色执行特定任务,保持上下文隔离 MCP:连接外部系统的协议,统一管理工具调用 Hooks:事件驱动的强制动作,确保关键流程执行 Plugins:能力打包分发的机制 核心逻辑是:常驻规则→方法复用→角色隔离→外部连接→强制动作→团队共享。
2026-08-07 09:48:43
321
原创 206-Kotlin 与 Java 互操作
这一章解决“在 Java/Kotlin 混合工程里安全互调”。绝大多数 Android 项目都是混合的:依赖库是 Java,老代码是 Java,新代码是 Kotlin。互操作最危险的就是平台类型带来的空陷阱。
2026-06-26 15:07:37
279
原创 205-协程与 Flow 入门
这一章解决“理解协程到底是什么、和线程什么关系,能写出基本的后台加载 + 切主线程,并理解 Flow 冷流”。这里只做入门,深挖(调度细节、异常传播、背压、测试)放在第 08 模块。
2026-06-26 15:03:29
127
原创 204-集合与函数式操作
这一章解决“用 Kotlin 集合的只读/可变区分和函数式操作链,写出安全、可读的数据处理代码”。这是日常业务代码出现频率最高的部分。
2026-06-24 09:44:55
240
原创 203-类、data class、sealed 与 object
这一章解决“用 Kotlin 的类型系统把数据和状态建模清楚”。data class和是 Android 现代架构(UDF、MVVM)的两块基石。
2026-06-24 09:44:09
150
原创 202-函数、Lambda 与作用域函数
这一章解决“能用 Kotlin 的函数式表达力写出简洁、可组合的代码”。重点是高阶函数、lambda 和五个作用域函数——它们贯穿整个 Android Kotlin 代码库。
2026-06-23 10:34:03
407
原创 201-基础与空安全
这一章解决“能读写现代 Kotlin,并且第一时间消除掉 Java 时代最常见的 NPE”的基础问题。空安全是 Kotlin 区别于 Java 最重要的设计,必须吃透。
2026-06-23 10:28:57
349
原创 105-Java 基础在 Android 中怎么用
这章把 Java 基础和 Android 真实开发连接起来。你可以先按前面几章补 Java,再用本章确认自己能否进入 Android 学习主线。
2026-06-18 10:42:58
328
原创 104-并发和内存基础
Android 开发必须理解 Java 并发。主线程卡顿、ANR、回调错线程、Activity 泄漏、数据竞争、重复请求,背后都离不开线程、同步和对象生命周期。
2026-06-15 11:47:13
214
原创 103-集合、异常和 IO
Android 业务代码里最高频的数据结构是集合;最常见的稳定性问题之一是异常边界处理不清;IO 则直接关系到主线程卡顿、ANR、资源泄漏和数据安全。
2026-06-15 11:45:46
198
原创 102-面向对象、接口和泛型
Activity继承体系、View树、监听器接口、Adapter、Callback、Repository。Java 面向对象基础如果不稳,代码会变成“能跑但难维护”的状态。
2026-06-12 15:46:58
271
原创 Android 系统短信数据库结构入门指南
本文介绍 Android 系统级短信数据库(TelephonyProvider),与应用自身的bugle_db不同,这是所有短信应用共享的系统数据库,通过 ContentProvider 访问。
2026-03-13 14:22:49
386
原创 actionbar和toolbar的区别
优先使用Toolbar因其灵活性和扩展性,适合需要自定义导航栏的现代应用(如修改高度、添加 Logo 或交互控件)。仅需基础导航时:可直接使用ActionBar(但需注意样式限制),例如简单列表页。通过合理选择二者,可高效实现符合设计规范的导航体验。
2026-01-29 13:40:40
585
原创 像素与无关像素
在Android项目的res目录下,创建不同的资源文件夹,每个文件夹对应不同的dpi类别,应用根据不同的dpi选择对用的资源文件,自适应布局。ppi(Pixels per Inch,像素密度):每英寸包含的物理像素的数量,设备在物理上的属性值,取决于屏幕自身,无法修改。密度无关像素:与实际物理像素无关,单位dp,可以保证在不同屏幕像素密度的设备上显示相同的效果。在480dpi(xxhdpi)屏幕上,1dp等于3px。在160dpi(mdpi)屏幕上,1dp等于1px。
2025-01-10 15:33:31
527
原创 拨号流程总结
TeleService应用发出拨号请求后,将通过AdapterBinder对象跨进程调用ConnectionServiceWrapper的mAdapter对象中的服务接口,再通过Telecom 中的处理,最终调用Dialer应用中lnCallService服务的updateCall 接口来更新通话状态。来源:Android Telephony原理解析与开发指南——杨青平。• Dialer和TeleService 应用中对应服务的响应。• Telecom 应用中的拨号流程。的placeCall 方法调用。
2024-10-13 19:40:01
564
原创 从源码看拨号流程(四)
Connection 创建完毕, TelephonyConnectionService 调用 placeOutgoingConnection 方法,通过Phone 对象调用 dial()方法进行拨号,其实调用的是执行顺序是GsmCdmaPhone.dial(),在GsmCdmaPhone 对象的拨号方法中会判断 ImsPhone对象是否存在,并根据相关配置决定是否要用ImsPhone对象来进行拨号;
2024-10-10 17:44:12
481
原创 从源码看拨号流程(三)
它检查Intent的动作,如果是ACTION_CALL、ACTION_CALL_PRIVILEGED或ACTION_CALL_EMERGENCY,则调用processOutgoingCallIntent方法。未知电话Intent通常是指那些没有明确指定如何处理的电话请求,例如,当系统接收到一个电话请求,但无法确定它是属于拨入电话还是其他类型的电话(如VoIP电话)。它根据KEY_IS_UNKNOWN_CALL标志决定是处理未知电话Intent还是拨出电话Intent。所有拨入和拨出电话的单一入口点。
2024-10-09 19:42:29
1063
原创 从源码看拨号流程(二)
此方法通过Uri指定的地址拨打电话,并可接受额外的参数(Bundle)来指定通话特性,如使用扬声器、视频状态等。EXTRA_START_CALL_WITH_SPEAKERPHONE:设置为true时,通话开始时自动打开扬声器。EXTRA_START_CALL_WITH_VIDEO_STATE:设置初始视频通话状态。如果有权限,它使用TelecomManager的placeCall()方法尝试拨打电话。首先,它检查应用程序是否有拨打电话的权限,即检查是否具有CALL_PHONE权限。
2024-10-09 15:49:05
937
原创 从源码看拨号流程(一)
拨号应用的主界面,通常包含一个DialpadFragment用于显示拨号键盘,以及一个ContactsFragment用于显示联系人列表。DialpadFragment是显示拨号键盘的Fragment。它包含一个数字键盘和一个输入框,用于用户输入电话号码。ContactsFragment是显示联系人列表的Fragment。
2024-10-09 12:04:07
894
原创 安卓系统签名
在Android开发中,系统应用(System Apps)通常需要特殊的签名才能安装在系统分区上,并享有系统级别的权限。这些签名通常是由设备制造商或Android源码构建过程中自动生成的。
2024-09-22 16:27:11
1693
1
原创 ARM笔记(三)-ARM寄存器、异常处理
五个异常模式:FIQ、 IRQ 、SVC、 Abort、 Undef。ARM有40个寄存器(8个工作模式),monitor多了3个寄存器。状态位:【0】ARM状态 【1】Thumb状态。ARM微架构:指令流水线、多核处理器。CPRS寄存器:当前程序状态寄存器。
2023-09-13 20:26:56
274
1
原创 ARM笔记(二)-ARM处理器
只保留常用的简单指令,硬件结构简单,复杂操作一般通过简单指令的组合实现,多单周期指令(嵌入式移动终端使用广泛)Word 32bits 存储数据在内存的起始地址必须是4的整数倍。Halfword 16bits 存储数据在内存的起始地址必须是2的整数倍。不仅包含了常用指令,还包含很多不常用的特殊指令(多用于PC及服务器等)Thumb指令集:所有指令都占用16bit存储空间,自增2。ARM指令集:所有指令都占用32bit存储空间,自增4。字节序:arm一般使用小端对齐。
2023-09-12 16:38:50
208
原创 ARM体系架构与接口技术笔记(一)
DMA总线:直接存储器访问,使用DMA总线可以不通过CPU直接在存储器直接进行数据传递。CPU读取地址有限,和地址总线相关。32位,地址空间2^32,4G。
2023-09-11 15:09:43
171
原创 嵌入书linux八股文(数据结构)
3.栈: 一种后进先出(LIFO)的数据结构,只允许在栈顶进行插入和删除操作。栈的应用非常广泛,如函数调用栈、括号匹配、表达式求值等。4.队列: 一种先进先出(FIFO)的数据结构,队列常用于实现缓存、任务队列、消息队列等。2.链表:它由一组节点组成,每个节点包含一个值和一个指向下一个节点的指针。树的根结点没有前驱,除根结点外的所有结点有且只有一个前驱。实现:sqlist.c sqlist.h test.c。6.堆:完全二叉树,堆常用于实现优先队列和排序算法。树中所有结点可以有零个或多个后继。
2023-09-06 17:05:16
323
1
原创 进程和线程
进程是线程的容器,真正完成代码执行的是线程,而进程则作为线程的执行环境。一个程序至少包含一个进程,一个进程至少包含一个线程,一个进程中的多个线程共享当前进程所拥有的资源。一个进程可用虚拟空间是2G,默认情况下,线程的栈的大小是1MB,所以理论上最多只能创建2048个线程。当需要数据隔离时,需要更好地稳定性时,更好地利用多核处理时,使用进程更合适。进程类型:交互进程、批处理进程、守护进程(一直在后台运行)1.(Linux)中什么是进程,线程,彼此有什么区别?线程(小进程):一个进程中执行的代码片段。
2023-09-04 21:12:17
169
1
原创 谷歌云端硬盘直接下载方法
有地址: https://drive.google.com/file/d/1Cv7IMSI3BTkdPnIhTZ_nzbqIerW477mk/view?将1Cv7IMSI3BTkdPnIhTZ_nzbqIerW477mk拼接到https://drive.google.com/uc?id=后面得到新的连接。直接复制到浏览器网址输入即可下载。
2023-04-11 14:13:01
15674
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅