mcpField
A
android-state-management

android-state-management

github.com/krutikjain开发1465 次安装31 周前更新
代码仓库

关于 android-state-management

面向 Android 开发的技能,指导在 Compose 和 XML 界面中设计可预测的状态、事件、reducer 与副作用。重点是生命周期感知的状态归属,以及加载、错误、权限和导航的恢复处理。

主要功能

  1. 01设计不可变界面状态
  2. 02区分状态与一次性事件
  3. 03处理加载、空和错误状态
  4. 04考虑生命周期与配置变更
  5. 05验证权限和导航行为

适用场景

  1. 01组织 Android Compose 界面状态
  2. 02呈现权限拒绝和同步失败
  3. 03避免在可复用 UI 中处理导航副作用
  4. 04测试配置变更时的界面行为

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/krutikjain/android-agent-skills --skill android-state-management

安装后在 Claude Code 中输入/android-state-management确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
references/
official-links.md
patterns.md
scenarios.md
scripts/
run_examples.sh

详细介绍

Android 状态管理

适用场景

  • 当请求涉及以下内容时使用此技能:Android UI 状态 reducer、Compose 或 XML Android 中的状态管理、Android 屏幕中的一次性事件。
  • 主要目标:为 Android UI 建模屏幕状态、事件、reducer 和副作用,并以可预测且感知生命周期的方式管理其归属。
  • 当范围扩大时,移交给以下技能:
  • android-coroutines-flow
  • android-ui-states-validation

工作流

  1. 确认用户可见的流程、目标设备行为以及需要关注的失败状态。
  2. 确定该流程所属的屏幕、活动、目标位置和状态持有者。
  3. 使用明确的加载、成功、空和错误处理来实现该流程。
  4. 在示例应用中验证无障碍功能、配置变更和返回栈行为。
  5. 将数据、架构或发布方面的问题移交给交接说明中指出的专用技能。

防护措施

  • 将加载、空、错误、离线和权限被拒绝等状态视为一等 UI 状态。
  • 不要将导航或权限副作用隐藏在可复用的 UI 组件中。
  • 优先使用感知生命周期的 API,而非手动回调链。
  • 确保深层链接、Intent 和权限提示可测试且可观测。

反模式

  • 认为产品流程只需考虑顺利路径。
  • 在多个位置硬编码请求代码或路由字符串。
  • 直接从存储库或网络层触发导航。
  • 发布缺少权限被拒绝或状态异常时恢复界面的流程。

修复示例

保持单一且不可变的 UI 状态界面
data class TaskBoardState(
    val tasks: List<TaskUiModel> = emptyList(),
    val isLoading: Boolean = false,
    val errorMessage: String? = null,
)
分离持久状态与一次性事件
private val _uiState = MutableStateFlow(TaskBoardState())
val uiState: StateFlow<TaskBoardState> = _uiState.asStateFlow()

private val _events = MutableSharedFlow<TaskBoardEvent>(replay = 0)
val events: SharedFlow<TaskBoardEvent> = _events
通过归约状态更新来替代直接修改 UI
_uiState.update { state ->
    state.copy(isLoading = false, tasks = refreshedTasks, errorMessage = null)
}

示例

顺利路径
  • 场景:通过单一不可变屏幕状态驱动 Compose 任务看板。
  • 命令:cd examples/orbittasks-compose && ./gradlew :app:testDebugUnitTest
边缘情况
  • 场景:在 XML fixture 中明确表示权限被拒绝和同步失败状态。
  • 命令:cd examples/orbittasks-xml && ./gradlew :app:testDebugUnitTest
失败恢复
  • 场景:将状态请求与协程、导航和 UI 验证提示分离。
  • 命令:python3 scripts/eval_triggers.py --skill android-state-management

完成检查清单

  • 实现路径明确、精简,并对应正确的 Android 界面。
  • 已运行或更新相关示例命令和基准提示词。
  • 当请求涉及相邻技能时,已记录交接事项。
  • 官方参考资料涵盖所选模式以及主要的迁移或故障排除路径。

官方参考资料

评论

支持 Markdown