一键导入
dev-learning-record
开发学习记录生成器。每次添加新功能或修改代码后,从Kotlin语法、Android架构、UI开发、数据库等角度分析学习点,生成结构化的学习文档。适用于代码学习、知识总结、开发复盘场景。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
开发学习记录生成器。每次添加新功能或修改代码后,从Kotlin语法、Android架构、UI开发、数据库等角度分析学习点,生成结构化的学习文档。适用于代码学习、知识总结、开发复盘场景。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | dev-learning-record |
| description | 开发学习记录生成器。每次添加新功能或修改代码后,从Kotlin语法、Android架构、UI开发、数据库等角度分析学习点,生成结构化的学习文档。适用于代码学习、知识总结、开发复盘场景。 |
帮助Kotlin和Android开发初学者理解每次代码修改背后的知识点。
分析涉及的Kotlin语法知识:
| 语法特性 | 说明 | 示例 |
|---|---|---|
| 数据类 | data class 自动生成equals/hashCode/toString | data class UrlRecord(...) |
| 密封类 | sealed class 限制继承层次,用于状态管理 | sealed class UIState |
| 扩展函数 | 为现有类添加新方法 | fun Context.toast() |
| 高阶函数 | 函数作为参数或返回值 | collect { } |
| 协程 | 异步编程 | viewModelScope.launch { } |
| Flow | 响应式数据流 | flowAll(): Flow<List<T>> |
| 空安全 | ?、?.、?:、!! 操作符 | record.sourceName?.let { } |
| 属性委托 | by lazy、by viewModels | val viewModel by viewModels() |
| 单例对象 | object 声明单例 | object UrlRecordInterceptor |
分析架构模式和组件使用:
| 架构概念 | 说明 | 本项目应用 |
|---|---|---|
| MVVM | Model-View-ViewModel架构 | Activity观察ViewModel状态 |
| 单向数据流 | StateFlow驱动UI | _uiState -> uiState |
| Repository模式 | 数据访问抽象层 | appDb.urlRecordDao |
| 依赖注入 | Hilt/Koin管理依赖 | by viewModels() |
| 生命周期感知 | Lifecycle-aware组件 | lifecycleScope.launch |
分析界面开发技术:
| UI技术 | 说明 | 示例 |
|---|---|---|
| ViewBinding | 视图绑定,替代findViewById | ActivityUrlRecordBinding |
| RecyclerView | 列表展示 | UrlRecordAdapter |
| SearchView | 搜索框组件 | OnQueryTextListener |
| Menu | 菜单系统 | onCreateOptionsMenu |
| Dialog | 对话框 | alert { } |
分析Room数据库使用:
| Room组件 | 说明 | 示例 |
|---|---|---|
| Entity | 实体类,对应表 | @Entity tableName = "url_records" |
| DAO | 数据访问对象 | @Dao interface UrlRecordDao |
| Database | 数据库类 | @Database version = 93 |
| Migration | 数据库迁移 | AutoMigration 92→93 |
| Flow查询 | 响应式查询 | fun flowAll(): Flow<List<T>> |
分析网络请求相关:
| 网络组件 | 说明 | 示例 |
|---|---|---|
| OkHttp | HTTP客户端 | OkHttpClient |
| Interceptor | 拦截器 | UrlRecordInterceptor |
| 协程异步 | 非阻塞请求 | scope.launch { } |
# 开发学习记录 - [功能名称]
## 📚 Kotlin语法学习
### [语法点1]
**代码示例**:
```kotlin
// 代码片段
知识点:
为什么这样写: 解释原因
...
...
...
| 本次学习 | 相关知识 | 扩展阅读 |
|---|---|---|
| ... | ... | ... |
## 示例:URL访问记录功能学习记录
### Kotlin语法学习
#### 1. sealed class(密封类)
```kotlin
sealed class UrlRecordUIState {
object Loading : UrlRecordUIState()
data class Success(val records: List<UrlRecord>) : UrlRecordUIState()
data class Error(val message: String) : UrlRecordUIState()
object Empty : UrlRecordUIState()
}
知识点:
when表达式可以穷举所有状态为什么用密封类: UI状态是有限的几种,用密封类可以确保类型安全,避免遗漏状态处理。
private val _uiState = MutableStateFlow<UrlRecordUIState>(UrlRecordUIState.Loading)
val uiState: StateFlow<UrlRecordUIState> = _uiState.asStateFlow()
知识点:
MutableStateFlow是可变的状态流asStateFlow()暴露为只读的StateFlow为什么这样写: 遵循单向数据流原则,ViewModel内部可修改,外部只能观察。
@Query("SELECT * FROM url_records ORDER BY timestamp DESC")
fun flowAll(): Flow<List<UrlRecord>>
知识点:
Flow类型collect持续观察数据变化与List的区别:
List:一次性查询,数据变化不会更新Flow:持续观察,数据变化自动更新View (Activity) ← 观察 ← ViewModel ← 查询 ← Model (DAO/Database)
│ │
└──── 用户事件 ────────┘
职责划分:
lifecycleScope.launch {
viewModel.uiState.collectLatest { state ->
// 更新UI
}
}
知识点:
lifecycleScope绑定Activity生命周期@Entity(tableName = "url_records", indices = [Index("timestamp"), Index("domain")])
data class UrlRecord(
@PrimaryKey(autoGenerate = true)
val id: Long = 0,
val url: String,
val domain: String,
// ...
)
知识点:
@Entity定义表名@PrimaryKey定义主键indices创建索引加速查询@Database(
version = 93,
entities = [..., UrlRecord::class],
autoMigrations = [..., AutoMigration(from = 92, to = 93)]
)
知识点:
AutoMigration自动处理简单迁移override val binding by viewBinding(ActivityUrlRecordBinding::inflate)
知识点:
findViewByIdclass UrlRecordActivity : ..., SearchView.OnQueryTextListener {
override fun onQueryTextChange(newText: String?): Boolean {
viewModel.setSearchQuery(newText)
return false
}
}
知识点:
OnQueryTextListener接口onQueryTextChange输入时触发false表示不消费事件通过对比 entities、schema JSON 和迁移方案,诊断并修复 Android Room 数据库在 entity 或 database 变更后的 schema 校验崩溃;增加数据库版本号,添加重命名/新增/删除列的迁移,并验证生成的 Room 代码。
优化Markdown文件中的ASCII流程图,使其更适合手机显示。将宽大的ASCII边框图转换为紧凑的树形结构。当用户要求修复流程图在手机上的显示问题时调用。
分析 Compose 界面是否使用了项目中可复用的组件和主题系统。适用于检查 Compose 屏幕是否符合项目规范或需要重构以使用共享组件。
检查备份系统中选择器、备份逻辑、恢复逻辑、备份信息显示之间的数据一致性。当用户问备份对不对、备份选漏了没、恢复和备份匹配吗、备份信息准不准时调用。
Legado Plus 模块学习讲解器。当用户想学习某个模块、询问模块功能、请求讲解代码架构时调用。提供生动详尽的模块讲解,包括架构图、代码走读、实践任务。
Critical Android code review for Payoo Android app. Focuses on high-impact issues - naming conventions, memory leaks, UIState patterns, business logic placement, lifecycle management, and MVI/MVVM pattern violations. Use when reviewing Kotlin files, pull requests, or checking ViewModels, Activities, Fragments, UseCases, and Repositories.