渐进式编程课
Android 目录
第 19 课2026.09.28

可重复验证第 18 课的 SavedStateHandle 恢复,不把用户主动强停误当成系统回收。

第 19 课:用 am kill 验证系统进程恢复

  • 日期:2026-09-28
  • 课程序号:第 19 课
  • 知识点:后台 am kill 与 force-stop 的测试语义

用途或适用场景

可重复验证第 18 课的 SavedStateHandle 恢复,不把用户主动强停误当成系统回收。

核心概念

系统保存的状态依附于任务栈;am kill 只终止可安全终止的后台进程,force-stop 会结束应用相关状态,不适合检验这一恢复路径。

最小代码或操作示例

text
1. 用第 18 课页面把 running 切换为 true,按 Home 让 Activity 进入后台。
2. 将示例包名换成实际 applicationId 后运行:
   adb shell am kill com.example.lesson
3. 从最近任务返回该应用,查看按钮是否仍显示“停止”。

3~5 分钟练习

重复一次测试,但先把 running 切换为 false,对照恢复后的按钮文字。

参考答案

在进程确被终止、任务栈仍被系统保留且保存流程完成时,恢复后应显示“开始”;若进程未被终止,不能把结果当成进程恢复证据。不要用 force-stop 替代 am kill。

与上一课的联系

沿用第 18 课的 LessonViewModel、running、SavedStateHandle 和按钮映射;本课只增加可控的后台进程终止验证步骤;下一课可观察保存状态只适合轻量数据的边界。

时效校验

时效校验:2026-09-28(已核对 Android Developers 当前 Saved State module 与 adb am kill/force-stop 文档;getMutableStateFlow 最低 Lifecycle 2.9.0;未实际连接设备)。

官方参考