+
+
+ 状态已恢复!
+
+
+
+ 执行重要操作
+
+
+
+```
+
+### 手动操作状态
+
+```javascript
+// 在浏览器控制台中
+window.pwaStateController.saveCurrentState() // 保存当前状态
+```
+
+## 工作原理
+
+### 1. 状态保存时机
+
+- 🔄 **页面隐藏时**:`visibilitychange`事件触发
+- 🔄 **失去焦点时**:`blur`事件延迟1秒触发
+- 🔄 **页面卸载时**:`beforeunload`事件触发
+- 🔄 **定期保存**:每30秒自动保存一次
+- 🔄 **手动触发**:调用API手动保存
+
+### 2. 状态恢复时机
+
+- 🔄 **应用启动时**:自动检查并恢复状态
+- 🔄 **页面显示时**:`visibilitychange`事件触发
+- 🔄 **获得焦点时**:清除延迟保存定时器
+
+### 3. 存储策略
+
+```
+localStorage (主要状态)
+ ↓
+sessionStorage (临时状态)
+ ↓
+IndexedDB (大量数据)
+ ↓
+Service Worker缓存 (跨页面共享)
+```
+
+### 4. 恢复决策
+
+状态恢复需要同时满足:
+- ✅ 状态未过期(默认30分钟内)
+- ✅ URL路径匹配
+- ✅ 设备方向未显著变化
+
+## 配置选项
+
+### 修改状态保存间隔
+
+```typescript
+// 在 PWAStateController 中修改
+private setupPeriodicSave(): void {
+ setInterval(() => {
+ if (!document.hidden) {
+ this.saveCurrentState()
+ }
+ }, 60000) // 改为60秒保存一次
+}
+```
+
+### 修改状态过期时间
+
+```typescript
+// 在 StateRestoreDecision 中修改
+export class StateRestoreDecision {
+ private maxStateAge = 60 * 60 * 1000 // 改为60分钟
+}
+```
+
+### 自定义状态内容
+
+```typescript
+// 在 PWAStateController 中添加自定义状态
+private getAppSpecificState(): any {
+ return {
+ // 现有状态...
+
+ // 添加自定义状态
+ customData: {
+ userPreferences: this.getUserPreferences(),
+ currentMedia: this.getCurrentMedia(),
+ searchHistory: this.getSearchHistory()
+ }
+ }
+}
+```
+
+## 调试和监控
+
+### 控制台调试
+
+```javascript
+// 检查状态管理器是否可用
+console.log('状态管理器:', window.pwaStateController)
+
+// 查看当前保存的状态
+console.log('本地状态:', localStorage.getItem('mp-pwa-app-state'))
+
+// 手动保存状态
+window.pwaStateController?.saveCurrentState()
+
+// 清除所有状态
+localStorage.removeItem('mp-pwa-app-state')
+sessionStorage.removeItem('mp-pwa-session-state')
+```
+
+### 监听状态事件
+
+```javascript
+// 监听状态恢复事件
+window.addEventListener('pwaStateRestored', (event) => {
+ console.log('状态已恢复:', event.detail.state)
+})
+```
+
+## 注意事项
+
+### iOS特殊性
+- PWA不与Safari共享存储空间
+- 后台执行时间有限(约30秒-5分钟)
+- 内存压力时会被强制清理
+- Service Worker可能会被暂停
+
+### 存储限制
+- **localStorage**: 约5-10MB
+- **sessionStorage**: 约5-10MB
+- **IndexedDB**: 较大但可能被清理
+- **Service Worker缓存**: 约50MB
+
+### 性能考虑
+- 避免保存过大的状态对象
+- 使用防抖技术避免频繁保存
+- 异步处理状态操作
+- 定期清理过期状态
+
+## 测试方法
+
+### 1. 基本功能测试
+1. 将应用添加到iOS桌面
+2. 打开PWA,填写测试表单
+3. 切换到其他应用
+4. 等待几分钟后重新打开PWA
+5. 检查表单数据和滚动位置是否恢复
+
+### 2. 状态管理测试
+1. 在PWA中访问演示页面:`/pwa-state-demo`
+2. 观察状态管理器状态
+3. 测试手动保存和恢复功能
+4. 验证状态恢复通知
+
+### 3. 长时间测试
+1. 保持PWA在后台运行几小时
+2. 使用其他应用增加内存压力
+3. 重新打开PWA检查状态恢复
+4. 重启设备后测试状态持久性
+
+## 故障排除
+
+### 状态未恢复
+1. 检查是否在PWA模式运行
+2. 确认状态管理器已初始化
+3. 检查控制台错误信息
+4. 验证存储权限和配额
+
+### 性能问题
+1. 减少状态保存频率
+2. 优化状态对象大小
+3. 检查内存使用情况
+4. 考虑延迟初始化
+
+### 兼容性问题
+1. 检查iOS版本支持
+2. 验证Service Worker注册
+3. 测试不同设备和浏览器
+4. 检查网络连接状态
+
+## 后续优化建议
+
+1. **智能压缩**:对大型状态对象进行压缩
+2. **增量保存**:只保存变化的状态部分
+3. **云端同步**:结合服务器实现跨设备状态同步
+4. **用户偏好**:允许用户自定义状态保存策略
+5. **性能监控**:添加状态管理性能指标
+6. **A/B测试**:测试不同的状态管理策略效果
+
+---
+
+通过这套完整的解决方案,您的MoviePilot PWA应该能够在iOS设备上提供更好的用户体验,显著减少因后台被杀而导致的状态丢失问题。
\ No newline at end of file
diff --git a/src/components/PWAStateDemo.vue b/src/components/PWAStateDemo.vue
new file mode 100644
index 00000000..e87199cd
--- /dev/null
+++ b/src/components/PWAStateDemo.vue
@@ -0,0 +1,185 @@
+